- - PR -
jfreechart棒グラフに影をつけたくない
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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); } } |
|
投稿日時: 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 も記載されると良いと思いますよ^^ 参考になりましたら幸いです。 |
|
投稿日時: 2009-01-22 16:50
ありがとうございます
目的のグラフができました |
1