【问题标题】:JFreeChart BarChart - Category MarkersJFreeChart BarChart - 类别标记
【发布时间】:2012-07-06 23:35:12
【问题描述】:

我正在创建一个包含多个频带作为类别轴的条形图。我想要做的是显示这些频段的可见分组:

例如:

Freq x1 ~ Freq x2 = Band y(因此域轴具有 x1、x1.1、x1.2 到 x2 类别的值) 频率 x3 ~ 频率 x4 = 频带 z (x3, x3.1 .....x4)

我想要做的是在图表中显示波段 Y 和波段 Z 的标记。请注意,根据我可能获得的数据集,并非所有类别都可能存在。比如说,对于第一个例子,我有 x1 到 x1.6 的值,所以波段标记将从 x1 到 x1.6

我希望我能解释我的要求。这在 JFreeChart 中可行吗?如果是这样,我该如何实现这一目标?

只是为了澄清一点,here's a picture 我想要实现的目标:

【问题讨论】:

    标签: java jfreechart bar-chart markers


    【解决方案1】:

    您的乐队是否与类别相对应?如果他们这样做,您可以使用CategoryMarker

    CategoryMarker marker = new CategoryMarker("Category 3");
    marker.setLabel("Band Y");
    marker.setPaint(Color.red);
    marker.setOutlinePaint(Color.red);
    marker.setAlpha(0.5f);
    marker.setLabelAnchor(RectangleAnchor.TOP);
    marker.setLabelTextAnchor(TextAnchor.TOP_CENTER);
    marker.setLabelOffsetType(LengthAdjustmentType.CONTRACT);
    plot.addDomainMarker(marker, Layer.BACKGROUND);
    

    我不知道如何创建 Mutli-CategoryMarker,但您可以通过以下方式创建类似的东西 调整ItemMarginCategoryMargin 并添加额外的CategoryMarkers

    {
      CategoryMarker marker = new CategoryMarker("Category 2");
      marker.setLabel("Band X");
      marker.setLabelAnchor(RectangleAnchor.TOP);
      marker.setLabelTextAnchor(TextAnchor.TOP_CENTER);
      marker.setLabelOffsetType(LengthAdjustmentType.CONTRACT);
      plot.addDomainMarker(marker, Layer.BACKGROUND);
      }
      {
      CategoryMarker marker = new CategoryMarker("Category 3");
      plot.addDomainMarker(marker, Layer.BACKGROUND);
      }
      renderer.setItemMargin(0.0);
      CategoryAxis axis = plot.getDomainAxis();
      axis.setCategoryMargin(0);
    }
    

    您可以创建一个方法来添加多个标记,例如

    private void addMarkers(List<Comparable> keys){
    ...
    

    更正确的解决方案可能是编写自己的渲染器实现和相关代码

    【讨论】:

    • 感谢您的回答!是的,我的乐队对应于一组类别...比如说 band#1 = {category1....category4},band#2 = {category5.....category8} 等等。我了解,通过扩展此解决方案,我可以为每个类别单独添加一个类别标记,但可以定义一组与乐队相对应的类别?
    猜你喜欢
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    • 2014-08-28
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多