JFreeChart的BARCHART - 类别标记(JFreeChart BarChart -

2019-09-19 03:49发布

我创建一个包含多个频段作为类别轴的条形图。 我想要做的就是展示这些频段的可视分组:

例如:

频率X1〜频率X2 =波段Y(因此域轴具有用于类别X1,X1.1,X1.2直到X2值)频率X3〜X4频率波段= Z(X3,X3.1 ..... X4)

我想要做的是带Y和乐队中的Z图形显示标记。 需要注意的是基于我可能得到的数据集,并不是所有的类别可能存在。 比方说,为第1例中,我得到了值x1到X1.6等乐队标志是从X1至X1.6

我希望我可以解释我的要求。 这是可能的JFreeChart的? 如果是这样,我怎么可能去实现呢?

只是为了澄清多一点, 这里有一个画面 ,我想实现的东西:

Answer 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);

我不能工作了如何建立一座耗资-CategoryMarker,但你可以通过调整创造一些similer 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){
...

更正确的解决方案可能是写自己的执行渲染和accociated代码



文章来源: JFreeChart BarChart - Category Markers