私のデータ値は 0 から 100 の間で変動する可能性があります。0 ~ 30 の範囲を示す JFreeChart DialPlot を表示したいと思います。30 より大きい値は、針を 30 に固定することで表示されますが、実際の値はダイヤルに表示されます。
以下の画像は、私のコード例が現在生成しているものを示しています。
電流出力
ここでは、値 50 を表示しています。ダイヤルは、14 を指すように一周しています。燃料ダイヤルと同じように、最大値 (30) に設定することをお勧めします。
望ましい出力
これは JFreeChart で可能ですか? 以下のSSCCEコード。
public class DemoChartProblem {
private final DefaultValueDataset dataset = new DefaultValueDataset(50);
private final JFrame frame = new JFrame();
public static void main(String[] args) throws Exception {
new DemoChartProblem();
}
public DemoChartProblem() {
frame.setPreferredSize(new Dimension(300, 300));
frame.add(buildDialPlot(0, 30, 5));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
frame.setVisible(true);
}
});
}
private ChartPanel buildDialPlot(int minimumValue, int maximumValue,
int majorTickGap) {
DialPlot plot = new DialPlot(dataset);
plot.setDialFrame(new StandardDialFrame());
plot.addLayer(new DialValueIndicator(0));
plot.addLayer(new DialPointer.Pointer());
StandardDialScale scale = new StandardDialScale(minimumValue, maximumValue,
-120, -300, majorTickGap, majorTickGap - 1);
scale.setTickRadius(0.88);
scale.setTickLabelOffset(0.20);
plot.addScale(0, scale);
return new ChartPanel(new JFreeChart(plot));
}
}