我正在尝试绘制一个简单的折线图,几乎一切都很好,我用这样一个简单的代码填充我的数据集:
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(-10 , "S21" , "1000" );
dataset.addValue(-20 , "S21" , "1001" );
dataset.addValue(-25 , "S21" , "1002" );
dataset.addValue(-30 , "S21" , "1003" );
dataset.addValue(-25 , "S21" , "1004" );
...
然后我创建折线图:
lineChart = ChartFactory.createLineChart(
"S21",
"Frequency (MHz)",
"Value (db)",
dataset,
PlotOrientation.VERTICAL,
true,
true,
false);
我在X轴上的值为1000 1001 1002 ......等等。无论如何我注意到,如果我添加更多点,jfreechart在x轴上没有足够的空间并显示三个点(... )取代价值观。这很奇怪,我想拥有尽可能多的积分(例如1000,有一个好的 分辨率),但标签只显示这些点的子集,所以我没有用完od空间:
E.g。积分:1000,1001,1002,......,2000(1000分)
标签:1000,1100,1200,...,1900,2000(10个标签)
有可能吗?我在网上寻找解决方案,但没有找到任何有用的东西。
答案 0 :(得分:3)
您可能必须结合以下几种方法:
按照建议的here更改CategoryLabelPositions
。
CategoryAxis domainAxis = plot.getDomainAxis();
domainAxis.setCategoryLabelPositions(
CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 2.0));
根据建议here调整图表的大小。
ChartPanel piePanel = new ChartPanel(lineChart) {
@Override
public Dimension getPreferredSize() {
return new Dimension(640, 480);
}
};
或者,根据类别的数量,使用SlidingCategoryDataset
,如建议的here。
可选地,如果类别形成连续域,则切换到XY图,例如, ChartFactory.createXYLineChart()
。