QA@IT

JFreeChartの縦軸の位置を揃えたい

4453 PV

初めまして。arubi-momoと申します。
Java Swing とJFreeChartを利用して開発をしております。Javaのバージョンは7です。

1つの画面の中に、縦に複数のグラフを並べて表示するということをやりたいです。
ベースとなるJPanelの上に、ChartPanelを複数枚並べて、表示しています。

BasePanel = new JPanel();
BasePanel.setLayout(new BoxLayout(BasePanel, BoxLayout.Y_AXIS));
contentPane.add(BasePanel);
BasePanel.setVisible(true);

// 縦軸分割数でグラフエリアを割って、高さを計算
int intHeight = BasePanel.getHeight() / divide;
// ChartPanel追加
for(int i = 0; i < divide; i++){
    chartPanel.add(initChartPanel(intHeight)); // initChartPanelでChartPanelを生成しています
    chartPanel.get(i).setBounds(0, intHeight * i, 1005, intHeight);
    BasePanel.add(chartPanel.get(i));
}

このようにパネルを分けて、グラフを縦に並べたときに、縦軸の位置はそれぞれの軸の数値の幅によってずれてしまいます。
そこで、setFixDimensionで位置を指定してみたのですが、縦軸が1つの時はそれで位置はそろったのですが、
縦軸が複数になった場合、ずれてしまいます。setFixDimensionはパネルの端からの位置は指定できるようですが、
1軸目と2軸目の距離は指定できないようで、以下のようにやってみたのですが、微妙にずれてしまいます。

//2軸あるグラフと1軸しかないグラフを混在させる場合
//このように軸の数で位置を調整してみたのですが、ずれてしまいます。

//1軸しかないグラフ
Axes.setFixDimension(20);

//2軸のグラフ
Axes.setFixDimension(10);

縦軸が複数の場合は、一番軸数の多いグラフの1軸目の位置に合わせてグラフを表示したいのです。

グラフ1 1.0│ 2.0│
グラフ2    300│
グラフ3    1000│

うまく表現できませんが、上記のように、複数軸あった場合は、右の罫線(縦軸)の部分を揃えたいのです。

実現方法をご存知の方がいらっしゃいましたら、ご教示いただければ幸いです。

何卒、よろしくお願いいたします。

ウォッチ

この質問への回答やコメントをメールでお知らせします。