JFreeChart:单轴分布图

时间:2013-05-03 00:19:05

标签: jfreechart

我正在使用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坐标。

我得到了这个结果:

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

但是我想要这样的东西:

image 2 http://img521.imageshack.us/img521/3721/points2.jpg

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

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

非常感谢。

1 个答案:

答案 0 :(得分: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);