- PR -

JFreeChart 折れ線グラフの設定について

1
投稿者投稿内容
n.w
大ベテラン
会議室デビュー日: 2003/07/15
投稿数: 126
お住まい・勤務地: 神奈川
投稿日時: 2004-11-26 20:05
お世話になってます。 さっそくですが、質問させてください。
現在JFreeChartを使いグラフを作成していて、ChartFactoryクラスを使い作成した
棒グラフとLineAndShapeRendererクラスを使い作成した折れ線グラフを重ねて
表示しています。

その際、折れ線グラフのShape? 線上に着く記号(○とか□)を消したい
のですがうまく消せずはまってます。

折れ線グラフを作成したrenderer2変数内のメソッドのドキュメント
を漁りつついじっていたんですが、実現ができない状態です。

またChartFactoryクラス内の折れ線グラフを使い作ったグラフを
重ねて表示するという方法は実現可能なんでしょうか?

コード:
−−◆−−◆−− (折れ線イメージ)
    ↑これを消したい


そちらも試してみたのですが撃沈してしまいました。
どなたかご教授お願いします。

1. LineAndShapeRendererで作成した折れ線グラフの記号を消したい
2.ChartFactoryにて作成した2つのグラフを重ねて表示したい

1でも2でも意図したとおりに動けばどちらでもいいって認識ですが
実際JFreeChartではどちらの方法で作るのが望ましいのかも判断ついて
いないので意見もらえるとありがたいです。
よろしくお願いいたします。

コード:
         // 棒グラフ作成
	JFreeChart chart = ChartFactory.createBarChart(
		"TITLE", 					
		"", 						
		"HOGE",						
		dataset, 					
		PlotOrientation.VERTICAL, 	
		true, 						
		true, 						
		false 						
	);

	// 一層のカスタマイゼーションのためにプロット取得
	CategoryPlot plot = chart.getCategoryPlot();

	// 範囲軸に整数だけを表示
	NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
	rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());

	BarRenderer renderer = (BarRenderer) plot.getRenderer();
	CategoryAxis domainAxis = plot.getDomainAxis();

	// ラベル幅比率設定
	domainAxis.setMaxCategoryLabelWidthRatio(5.0f);

	// 折れ線グラフ用データセット
	CategoryDataset dataset2 = createDataset2(planVal);
	// 折れ線グラフデータ設定
	plot.setDataset(1, dataset2);

	// 折れ線グラフ作成
	CategoryItemRenderer renderer2 = new LineAndShapeRenderer();

	// 折れ線グラフ色設定	        
	renderer2.setSeriesPaint(0, new Color(0x0099CC));

	renderer2.setPlot(plot);
	plot.setRenderer(1, renderer2);

	// グラフの前面表示設定
	plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);


na2fusi
会議室デビュー日: 2003/06/08
投稿数: 16
投稿日時: 2004-11-27 02:19
既にご存知かと思いますがJFreeChartのインスタンス作成には2つの方法があります。
@ChartFactoryクラスのメソッドを用いる。
ADatasetとAxisとRendererを引数にしてPlotを生成
 Plotクラスを引数にしてJFreeChartを生成

ですがChartFactoryクラスのメソッド内部で行っている処理はAと変わりありません。
ChartFactoryクラスはドキュメントに書かれているとおりよく使われるグラフを作成するためのユーティリティクラスでしかなく複雑なグラフを作成しようと考えたら
Aの方法をとるしかありません。

引用:

1. LineAndShapeRendererで作成した折れ線グラフの記号を消したい
2.ChartFactoryにて作成した2つのグラフを重ねて表示したい



1.LineAndShapeRenderer#setDrawShapes(boolean)で設定
2.無理です。2つのグラフを重ねて表示するにはPlotクラスを共有することが必要です。
 しかしChartFactoryのメソッド間でPlotは共有されていません。

ところでJFreeChartのソースを参照されていますか?
ダウンロードしたzipファイルに同梱されているはずです。
開発の助けになるかと思いますし、
今回の質問についてもソースを読めば推測できると思います。
n.w
大ベテラン
会議室デビュー日: 2003/07/15
投稿数: 126
お住まい・勤務地: 神奈川
投稿日時: 2004-11-29 09:52
na2fusi様、前回に続きありがとうございます!

無事解決することができました、1と2に関する解答も
わかりやすく理解を深めることができました。

ドキュメントは主に
http://pistos.pe.kr/javadocs/と
21のJavadocをを参考にしていましたが
最新のソースを追うべきでした。
はまってしまい、視野狭くなっていたようです。
1

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