2016-07-28 13 views
0

私はGoogleに挑戦してきましたが、以下のような棒グラフの作成方法に関する回答は見つかりませんでした。 月と年の両方が表示されている間に月がx軸上にグループ化されているJavaFXでグラフを作成することは可能ですか?X軸のJavaFX棒グラフで月間のグループ化を行うにはどうすればいいですか?

参考にチャート:

Chart http://i67.tinypic.com/lhe6t.jpg

スタックバーを無視してください。私は毎月、年を繰り返す必要なしにx軸に月と年の両方を取得することに興味があります。

+0

後に印刷できないヌルを追加異なっていなければならない(http://whathaveyoutried.com)[あなたが働いていないこと、これまで何を試してみましたか]?あなたの質問をあなたの質問の一部として投稿してください。 – ManoDestra

+0

これにアプローチする方法は、 'Axis'をサブクラス化することです(より具体的には、' Axis 'をサブクラス化することです)。チャートAPIはこの種のカスタマイズ(imho)のためにうまく設計されていないため、これは簡単な作業ではありません(実際にはこのフォーラムの質問は広すぎます)。抽象メソッドをオーバーライドするだけでなく、 'layoutChildren()'メソッドをオーバーライドする必要があります。ドキュメントは限られているので、おそらく[ソースコード](http://hg.openjdk.java.net/openjfx/8u60/rt/file/996511a322b7/modules/controls/src/main/java/javafx)を見る必要があります。/scene/chart)を参照してください。 –

+0

@ManoDestraどこから始めたらいいかわからないので、まだ何も試していません。 – Hiltunea

答えて

0

月を月の1つの下に追加するだけです。数ヶ月は、私はいくつかの

public void start(Stage stage) { 
    NumberAxis y = new NumberAxis(); 
    CategoryAxis x = new CategoryAxis(); 
    BarChart<String, Number> bc = new BarChart<>(x, y); 
    bc.getData().add(new XYChart.Series<>()); 
    for (int i = 0; i < 24; i++){ 
     int year = i/12; 
     String mon = (i % 12 + 1) + ""; 
     for (int j = 0; j < year; j++) mon += "\0";//needs to be different by year 
     bc.getData().get(0).getData().add(
       new XYChart.Data<>(mon.startsWith("6") 
         ? " "+mon + "\n" + (year + 2013) 
         : mon, Math.random())); 
    } 

    Scene scene = new Scene(bc,800,400); 
    stage.setScene(scene); 
    stage.show(); 
} 

enter image description here

関連する問題