我正在使用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
如果我只是调整面板的大小,则会调整整个图表的大小(标题,数字,形状)。 所以我只想调整“灰色区域”。
显然,如果存在另一种合适的图表类型,那就更好了。
非常感谢。
答案 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);