【问题标题】:Change Plot label position in a Combined Plot JFreeChart更改组合图 JFreeChart 中的图标签位置
【发布时间】:2021-11-30 13:07:23
【问题描述】:

有没有办法将类别绘图标签(标题)的位置(在图像中用黑条截断)位于图表顶部和/或彼此垂直对齐?

这是我用来构造它的类。

var renderer = new LineAndShapeRenderer();
...
var yAxis = new NumberAxis();
...
var xAxis = new CategoryAxis(title);
...
CategoryPlot plot = new CategoryPlot(dataset, xAxis, yAxis, renderer);
...
var combinedPlot = new CombinedRangeCategoryPlot();
combinedPlot.add(plot, weight);
...

我使用的是 1.0.19 版的 JFreeChart,因为较新的版本会产生一些视觉效果。

【问题讨论】:

    标签: java jfreechart


    【解决方案1】:

    有一个误解:在您的示例中,我指的是标签“Plot 0”和“Plot1”;我要求能够将它们移动到图表顶部……

    在每个 subplot 域轴上调用 setDomainAxisLocation() 以移动轴及其标签。或者,从如下所示的List<CategoryPlot> 获取所需的轴参考。

    plot0.setDomainAxisLocation(AxisLocation.TOP_OR_LEFT);
    plot1.setDomainAxisLocation(AxisLocation.TOP_OR_LEFT);
    

    我只需要顶部的那些“Plot 0”和“Plot1”标签,而不是刻度标签……

    您可以根据需要使用setTickLabelsVisible(false) 隐藏刻度标签,并且可以有多个轴,如here 所示。

    要调整刻度标签方向,请在组成组合图的每个子批次上调用setCategoryLabelPositions()。也这样做

    • 情节创建时间。

        CategoryAxis axis0 = new CategoryAxis("Plot 0");
        axis0.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
        CategoryPlot plot0 = new CategoryPlot(…, axis0, …);
        …
        CategoryAxis axis1 = new CategoryAxis("Plot 1");
        axis1.setCategoryLabelPositions(CategoryLabelPositions.UP_90);
        CategoryPlot plot1 = new CategoryPlot(…, axis1, …);
      
    • 创建组合图之后。

        CombinedRangeCategoryPlot combinedplot = new CombinedRangeCategoryPlot(…);
        …
        List<CategoryPlot> list = combinedplot.getSubplots();
        list.get(0).getDomainAxis().setCategoryLabelPositions(CategoryLabelPositions.UP_90);
        list.get(1).getDomainAxis().setCategoryLabelPositions(CategoryLabelPositions.UP_90);
      

    垂直标签如下图所示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-05
      • 2019-02-04
      • 2012-04-05
      • 2019-07-08
      • 2018-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多