- PR -

jfreechart棒グラフに影をつけたくない

1
投稿者投稿内容
未記入
会議室デビュー日: 2004/03/13
投稿数: 2
投稿日時: 2009-01-22 15:53
jfreechartで棒グラフを作成してみたのですが
特に何も指定しないで棒グラフを作成すると棒グラフのバーに
影みたいなものがついてしまいます
そんな効果はつけずに単色の棒グラフでいいのですが・・
そういった指定をどのメソッドで行うのか探したのですが
見つかりませんでした
ご存知のかたいましたらアドバイス下さい


import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.general.DatasetUtilities;

//JFreeChartで棒グラフを作成 サンプル
public class Sample {

/**
* JFreeChartで棒グラフを作成
*/
public static void main(String[] args) {
//ステップ1:Datasetオブジェクトの作成
CategoryDataset dataset = createDataset();
//ステップ2:DatasetからJFreeChartオブジェクトを作成、及び設定
JFreeChart freeChart = createChart(dataset);
//ファイルや、Servletに出力
saveAsFile(freeChart, "./bar.png", 500, 400);
}

//ファイルに保存する
public static void saveAsFile(JFreeChart chart, String outputPath, int weight, int height) {
FileOutputStream out = null;
try {
File outFile = new File(outputPath);
if (!outFile.getParentFile().exists()) {
outFile.getParentFile().mkdirs();
}
out = new FileOutputStream(outputPath);
//PNGイメージファイルに保存する
ChartUtilities.writeChartAsPNG(out, chart, 300, 200);
//JPEGイメージファイルに保存する
//ChartUtilities.writeChartAsJPEG(out, chart, 500, 400);
out.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
//do nothing
}
}
}
}

//CategoryDatasetからJFreeChartを作成
public static JFreeChart createChart(CategoryDataset categoryDataset) {
JFreeChart jfreechart = ChartFactory.createBarChart("Bar Chart Demo", //タイトル
"製品", //categoryAxisLabel (カテゴリ軸、横軸、X軸のラベル)
"数量", //valueAxisLabel(ヴァリュー軸、縦軸、Y軸のラベル)
categoryDataset, // dataset
PlotOrientation.VERTICAL,
true, // legend
false, // tooltips
false); // URLs

//以下の設定は省略しても構いません。
//出力される円グラフの透明度、境界線の色/有無などの設定を行う:クラスPlot(棒グラフはCategoryPlot)
CategoryPlot plot = (CategoryPlot) jfreechart.getPlot();
//背景色 透明度
plot.setBackgroundAlpha(0.5f);
//前景色 透明度
plot.setForegroundAlpha(0.5f);
//その他設定は CategoryPlotを参照

return jfreechart;
}

/**
* CategoryDatasetオブジェクトの作成。
*
* 棒グラフを作成するために、CategoryDatasetを用意しなければなりません。
*/
public static CategoryDataset createDataset() {

String []rowKeys = {"One", "Two", "Three"};
String []colKeys = {"1987", "1997", "2007"};

double [][] data = {
{50, 20, 30},
{20, 10D, 40D},
{40, 30.0008D, 38.24D},
};

//以下のようなコードもOK
//DefaultCategoryDataset categoryDataset = new DefaultCategoryDataset();
//categoryDataset.addValue(10, "rowKey", "colKey");

return DatasetUtilities.createCategoryDataset(rowKeys, colKeys, data);
}

}
よこい
会議室デビュー日: 2003/08/22
投稿数: 7
投稿日時: 2009-01-22 16:36
はじめまして。

> CategoryPlot plot = (CategoryPlot) jfreechart.getPlot();

こいつの後あたりに、以下を記載でどうでしょうか?

 BarRenderer barRenderer = ((BarRenderer) plot.getRenderer());
 barRenderer.setShadowVisible(false);

これで影がなくなります。ついでに、3Dも解除したいということであれば、
以下を追加で OK です。

 barRenderer.setBarPainter(new StandardBarPainter());

JFreeChart は Version Up で頻繁に内部使用が変わるので、
お使いの Version も記載されると良いと思いますよ^^
参考になりましたら幸いです。
未記入
会議室デビュー日: 2004/03/13
投稿数: 2
投稿日時: 2009-01-22 16:50
ありがとうございます
目的のグラフができました
1

スキルアップ/キャリアアップ(JOB@IT)