Jfree 图表标签重叠

Jfree charts Labels overlapping

我正在使用面积图从数据库中绘制温度,但随着数据的增长,图表标签开始合并。请帮助我修复它。

JFreeChart 不对面积图进行任何重叠检测。您必须实现自己的定制器,并且可以设计一个算法来跳过一些标签,只需将它们设为透明即可。

您必须创建 class 并实施

net.sf.jasperreports.engine.JRChartCustomizer

并在名为 customize 的覆盖方法中编写逻辑。例如,如果您想在第 8 次迭代后打印标签,请按照以下代码中的 done 进行操作以供参考。

@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));
                       }
           }
       }