- - PR -
JFreeChart複合グラフ表示について
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-11-12 10:54
お世話になってます。
現在、JFreeChartを使い棒グラフと折れ線グラフの 複合グラフを作成しています。 表自体はできたのですが、グラフのY軸データが 棒グラフと折れ線グラフで整合がとれず苦戦しています。 グラフイメージは下記のようにしていますが、 ※1と※2で棒グラフと折れ線グラフが別物として 表示されてしまいます。 方法としては合わせるか※2を表示せず 棒グラフ内に折れ線グラフを乗せるしかないのかと 思って色々調べてみたのですが、わからない状態です 方法を又は参考サイトなど教えてもらえると幸いです。
[ メッセージ編集済み 編集者: n.w 編集日時 2004-11-12 11:06 ] | ||||||||||||
|
投稿日時: 2004-11-12 11:25
自己レスです。
解決しました。 ValueAxis#setMaximumAxisValue(double max) を使用し折れ線、棒グラフ共通の最大値を作成することで きれいにだす事ができました。 ただsetMaximumAxisValueは推奨されておらず setUpperBoundメソッドを使用した方がいいみたいです。 が、まだ試してません。 | ||||||||||||
|
投稿日時: 2004-11-12 12:19
createChartメソッドを以下のように修正すれば良いかと思います。
グラフの種類が違うからといって plot.setDataset(int,Dataset)やplot.setRenderer(int,Renderer)の 第一引数に異なる数値を渡す必要はありません。 異なる数値を渡すと別々のグラフを一つに重ねたものとして解釈されます。 棒グラフの後ろに折れ線グラフを配置すると醜いので 折れ線グラフを棒グラフの前にしたほうがいいかもしれませんね。
| ||||||||||||
|
投稿日時: 2004-11-12 13:22
na2fusi様、ありがとうございます。
ご指摘の点も含めグラフをきれいに出すことができました。 ただ気になったのですが、ChartFactoryで作成したグラフと CategoryItemRenderer renderer2 = new BarRenderer(); にて作成したグラフではChartFactoryで作成したグラフの方が 優先度(?)が高い為ChartFactoryで折れ線グラフを作ったのですが ※3位置に出るグラフの説明欄の順番折れ線を一番右にしたい 場合など調節が効かない作りになってしまいます。 回避策としてはLegendクラスのメソッドなど駆使して並び替えるなどを 行うべきでしょうか?
[ メッセージ編集済み 編集者: n.w 編集日時 2004-11-12 13:35 ] [ メッセージ編集済み 編集者: n.w 編集日時 2004-11-12 13:37 ] | ||||||||||||
|
投稿日時: 2004-11-12 16:13
折れ線グラフが棒グラフの後ろに隠れてしまうことを優先度が高いとおっしゃっていますか? 折れ線グラフが棒グラフの後ろに隠れてしまったのは plot.setDatasetRenderingOrder(DatasetRenderingOrder.REVERSE);の引数です。 詳しくはjfreechartのAPIを読んでください。
何も指定しないとデフォルトの設定が適用されます。 フレームのサイズやLegendの位置、フォントのサイズも影響しています。 もしLegendの並び替えや中身をいじりたいなら plot.getLegendItemsでLegendItemCollectionを取得 plot.setFixedLegendItemsでセットするとよいでしょう。 (私はLegendの中身をいじったことがないのでこの程度しか答えられません。) レイアウトの設定はいろいろできるかと思いますのでAPIのドキュメントと にらめっこしながら納得のいくものを作ってみてください。 | ||||||||||||
|
投稿日時: 2004-11-17 20:55
na2fusi様ありがとうございました。
無事思ったとおりのグラフを作成することができました。 APIのドキュメントエキサイト翻訳でひたすら訳して はいたんですが、はまってしまっていました ![]() やはり英語は必須だなと痛感した今日この頃です。 JFreeChartの細かい点はいじくり倒してみようと思います。 |
1