2

我正在使用 JFreeChart,我想要一个只有一维的图表:x 轴(表示毫秒)和形状(表示事件)。

我创建了一个 XYLineChart 和一个带有隐藏 y 轴的 XYPlot :

 this.chart = ChartFactory.createXYLineChart(
     "","","",dataset,PlotOrientation.VERTICAL, false, true,false);

 XYPlot plot = (XYPlot) chart.getPlot();

 plot.setBackgroundPaint( Color.lightGray );
 plot.setDomainGridlinePaint( Color.white );
 plot.setRangeGridlinePaint( Color.white );
 plot.setRangeGridlinesVisible(false);
 plot.setDomainCrosshairVisible( true );
 plot.setRangeCrosshairVisible( false ); 

 NumberAxis range = (NumberAxis) plot.getRangeAxis();
 range.setVisible(false);
 range.setRange(0.0, 1.0);
 range.setTickUnit(new NumberTickUnit(0.5));

在数据集中,我使用了固定的 y 坐标。

我得到了这个结果:

图片 1 http://imageshack.us/a/img46/4935/pointsuw.jpg

但我想要这样的东西:

图 2

如果我只是调整面板的大小,整个图表都会调整大小(标题、数字、形状)。所以我只想调整“灰色区域”的大小。

显然,如果存在另一种合适的图表类型会更好。

非常感谢。

4

1 回答 1

0

如果其宽度/高度低于可配置的阈值,则会调整整个图表的大小。

我通过添加 ChartPanel 的代码并使用这两种方法ChartPanel.setMinimumDrawWidth(int)ChartPanel.setMinimumDrawWidth(int)设置这些阈值来修改您的示例。

this.chart = ChartFactory.createXYLineChart(
 "","","",dataset,PlotOrientation.VERTICAL, false, true,false);

XYPlot plot = (XYPlot) chart.getPlot();

plot.setBackgroundPaint( Color.lightGray );
plot.setDomainGridlinePaint( Color.white );
plot.setRangeGridlinePaint( Color.white );
plot.setRangeGridlinesVisible(false);
plot.setDomainCrosshairVisible( true );
plot.setRangeCrosshairVisible( false ); 

NumberAxis range = (NumberAxis) plot.getRangeAxis();
range.setVisible(false);
range.setRange(0.0, 1.0);
range.setTickUnit(new NumberTickUnit(0.5));

ChartPanel chartPanel = new ChartPanel(this.chart);
chart.setMinimumDrawHeight(10);
chart.setMinimumDrawWidth(10);
于 2014-09-11T06:51:25.697 回答