我想自定义我的图表,所以我想使用类定制器, 我使用以下代码将类别标签更改为垂直,但我不知道它为什么会生成错误!
代码:
public void customize(JFreeChart jfc, JRChart jrc) {
CategoryPlot myPlot = jfc.getCategoryPlot();
HorizontalCategoryAxis axis = (HorizontalCategoryAxis)myPlot.getDomainAxis();
axis.setVerticalCategoryLabels(true);
}
错误是:
cannot find symbol : Class HorizontalCategoryAxis
我也尝试过:
CategoryItemRenderer renderer = (CategoryItemRenderer) plot.getRenderer();
CategoryItemLabelGenerator generator = new StandardCategoryItemLabelGenerator("{2}", new DecimalFormat("0.00"));
renderer.setLabelGenerator(generator);
renderer.setItemLabelsVisible(true);
XYItemRenderer renderer2 = (XYItemRenderer) plot.getRenderer();
XYItemLabelGenerator generator2 = new StandardXYItemLabelGenerator("{2}", new DecimalFormat("0.00"));
renderer.setLabelGenerator(generator);
和错误:
该行找不到符号:
renderer.setLabelGenerator(generator);
和
没有合适的构造函数
XYItemLabelGenerator generator2
我的参考是:
http://files.blogjava.net/hao446tian/jfreechart-1.0.1-US_developer_guide.pdf
更新 我仍然看不到categorieExpression(在Y轴上):((
答案 0 :(得分:2)
首先,您的失败代码似乎是您的示例与您使用的库之间的版本不匹配。 setLabelGenerator
方法已被删除,并替换为setBaseItemLabelGenerator
:
CategoryPlot plot = yourPlot;
CategoryItemRenderer renderer = (CategoryItemRenderer) plot.getRenderer();
CategoryItemLabelGenerator generator = new StandardCategoryItemLabelGenerator("{2}", new DecimalFormat("0.00"));
renderer.setBaseItemLabelGenerator(generator);
renderer.setBaseItemLabelsVisible(true);
XYItemRenderer renderer2 = (XYItemRenderer) plot.getRenderer();
XYItemLabelGenerator generator2 = new StandardXYItemLabelGenerator("{2}",
new DecimalFormat("0.00"),
new DecimalFormat("0.00"));
renderer.setBaseItemLabelGenerator(generator);
您可以在我的示例中看到StandardXYItemLabelGenerator
采用两种格式,一种用于x值,另一种用于y。
至于HorizontalCategoryAxis
的使用,它与setLabelGenerator
遭遇同样的命运。假设你想要一个CategoryAxis
的垂直图,其标签是垂直的而不是水平的,你可以使用setLabelAngle
来达到预期的效果:
public void customize(JFreeChart jfc, JRChart jrc) {
CategoryPlot myPlot = jfc.getCategoryPlot();
CategoryAxis axis = myPlot.getDomainAxis();
axis.setLabelAngle(-Math.PI / 2);
}