【发布时间】:2021-05-23 23:44:21
【问题描述】:
我正在使用面积图从数据库中绘制温度,但随着数据的增长,图表标签开始合并。请帮我把它修好。
【问题讨论】:
-
嗨@Rafay,欢迎!,您应该编辑您的问题,显示一小段可重现的代码,以帮助您
标签: jfreechart
我正在使用面积图从数据库中绘制温度,但随着数据的增长,图表标签开始合并。请帮我把它修好。
【问题讨论】:
标签: jfreechart
JFreeChart 不对面积图进行任何重叠检测。您必须实现自己的定制器,并且可以设计一个算法来跳过一些标签,只需让它们透明即可。
你必须创建类并实现
net.sf.jasperreports.engine.JRChartCustomizer
并在名为customize 的重写方法中编写逻辑。例如,如果您想在第 8 次迭代后打印标签,请按照以下代码中的操作进行操作以供参考。
@Override
public void customize(org.jfree.chart.JFreeChart chart, net.sf.jasperreports.engine.JRChart jasperChart) {
org.jfree.chart.renderer.category.AreaRenderer renderer;
org.jfree.chart.plot.CategoryPlot plot;
org.jfree.chart.axis.NumberAxis rangeAxis;
org.jfree.chart.axis.CategoryAxis axis;
renderer = (org.jfree.chart.renderer.category.AreaRenderer) chart.getCategoryPlot().getRenderer();
plot = chart.getCategoryPlot();
rangeAxis = (org.jfree.chart.axis.NumberAxis) plot.getRangeAxis();
axis = plot.getDomainAxis();
CategoryAxis domainAxis = plot.getDomainAxis();
CategoryLabelPositions pos = domainAxis.getCategoryLabelPositions();
for (int i = 1; i <= plot.getCategories().size(); i++) {
if(i%8==0){
continue;
} else{
String cat_Name = (String) plot.getCategories().get(i-1);
domainAxis.setTickLabelPaint(cat_Names, new Color(0,0,0,0));
}
}
}
【讨论】: