我遵循 JFreeChart ( StackedBarChartDemo5 ) 的演示,以便创建一个允许我使用 GroupedStackedBarRenderer
的绘图。
基本上,我正在绘制连接到 radio (代表图中的条)的每个电台(代表条中的堆栈)的广播时间,用于接收和传输(RX 和 TX)。
情节看起来像这样:
有两个类别(RX 和 TX)和多个组( radio )。如您所见,目前 radio MAC 无法读取。
我想旋转这些标签,以使情节清晰。
我使用了以下代码来尝试旋转标签: subCategoryAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI/4));
这仅旋转类别(RX 和 TX)的标签,而不是组( radio MAC)的标签:
我还尝试了其他几种方法,但所有这些方法都无济于事......我如何旋转这些子标签?
这是我用来填充标签的底层代码:
SubCategoryAxis subCategoryAxis = new SubCategoryAxis("Radio MACs (separate Rx and Tx plots)");
subCategoryAxis.setCategoryMargin(0.05D);
// subCategoryAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI / 4));
KeyToGroupMap keyToGroupMap = null;
final Set<String> radios = Sets.newHashSet();
for (Entry<XRadio, Triplet<XStation, Double, Double>> entryMap: channelTimes.entries()) {
final String radioMac = entryMap.getKey().getMac();
if (keyToGroupMap == null)
keyToGroupMap = new KeyToGroupMap(radioMac);
if (!radios.contains(radioMac)) {
subCategoryAxis.addSubCategory(radioMac);
radios.add(radioMac);
}
final Triplet<XStation, Double, Double> chTriplet = entryMap.getValue();
final String seriesKey = radioMac + ":" + chTriplet.a.getMac();
keyToGroupMap.mapKeyToGroup(seriesKey, radioMac);
model.getDataset().addValue(chTriplet.b, seriesKey, "Rx");
model.getDataset().addValue(chTriplet.c, seriesKey, "Tx");
}
if (keyToGroupMap == null)
return;
groupedStackedBarRenderer.setSeriesToGroupMap(keyToGroupMap);
groupedStackedBarRenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
groupedStackedBarRenderer.setBaseItemLabelsVisible(true);
groupedStackedBarRenderer.setItemMargin(0.1D); // 10 %
groupedStackedBarRenderer.getPlot().setDomainAxis(subCategoryAxis);
最佳答案
您可以以弧度为单位设置 CategoryAxis
的旋转:
subCategoryAxis.setLabelAngle(-Math.PI/2);
编辑:
看来 SubCategoryAxis
忽略了子标签的旋转。
在 SubCategoryAxis#drawSubCategoryLabels
方法中,使用 angle=0
调用 TextUtilities.drawRotatedString()
。
注意:示例来自 1.13。
正确的解决方案是制作一个补丁来修复该问题并将该补丁提交给开发人员。
要针对您的情况修复它,您可以扩展 SubCategoryAxis
并使用正确的角度调用 TextUtilities.drawRotatedString()
。
关于java - 在 JFreeChart 中使用 GroupedStackedBarRenderer 时如何旋转组标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7240771/