以下fxmlのようにLineChartでBOTTOMのNumberAxisのlowerBoundが極端に大きいグラフを作りました。
この大きさは"1970年1月1日 00:00:00"を起点とした秒数となっており、upperBoundにはlowerBound+246060を設定して秒単位のX座標とした1日のグラフを作成しています。
tickUnitに1時間の秒数を入れることにより1時間ごとに23本の縦の目盛線を引くようにしています。
通常は全ての目盛線の下に座標の数値(1970年1月1日 00:00:00からの秒数)が表示されますが、表示される桁数が大きいためか2時間ごとにしか表示されません。(lowerBoundを0にすれば1時間ごとに表示されます)
そもそも、最終的に秒数を表示したいわけではなくNumberAxis.DefaultFormatter::toString()で最大2桁の時間(HH)形式の文字列に変換して表示しているのですが、それでも2時間ごとにしか表示されません。
これを普通に1時間ごとに表示できる裏技的な方法などありましたらご教示いただけますでしょうか。
座標の起点を0にしてデータ座標をその分マイナスしてあげればできるとは思うのですが、できればそのようなデータを加工する対応はなるべく避けてたいと思っております。
よろしくお願いいたします。
FXML
1 <LineChart layoutX="21.0" layoutY="51.0" prefHeight="699.0" prefWidth="1195.0"> 2 <yAxis> 3 <NumberAxis lowerBound="0" prefHeight="528.0" prefWidth="28.0" side="LEFT" tickUnit="100" upperBound="1000" /> 4 </yAxis> 5 <xAxis> 6 <NumberAxis autoRanging="false" lowerBound="151103600" minorTickCount="0" prefHeight="53.0" prefWidth="951.0" side="BOTTOM" tickLabelGap="0.0" tickUnit="3600" upperBound="151190000" /> 7 </xAxis> 8 </LineChart> 9 10
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/04 08:33