我正在创建一个包含多个频段作为类别轴的BarChart。我想要做的是显示这些频段的可见分组:
例如:
Freq x1~Freq x2 = Band y(因此域轴具有类别x1,x1.1,x1.2到x2的值) 频率x3~Freq x4 =频带z(x3,x3.1 ...... x4)
我想要做的是在图表中显示Band Y和Band Z的标记。请注意,根据我可能获得的数据集,并非所有类别都可能存在。比方说,对于第一个例子,我有x1到x1.6的值,所以带标记从x1到x1.6
我希望我能解释一下我的要求。这可能在JFreeChart中吗?如果是这样,我该如何实现这一目标呢?
只是为了澄清一点,here's a picture我希望实现的目标:
答案 0 :(得分:4)
您的乐队是否与类别相对应?如果他们这样做,您可以使用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但你可以创建一些similer by
调整ItemMargin
和CategoryMargin
并添加其他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){
...
更正确的解决方案可能是编写您自己的渲染器实现和相关代码