gpt4 book ai didi

java - 在 JFreeChart 中使用 GroupedStackedBarRenderer 时如何旋转组标签?

转载 作者:行者123 更新时间:2023-12-02 07:56:39 25 4
gpt4 key购买 nike


我遵循 JFreeChart ( StackedBarChartDemo5 ) 的演示,以便创建一个允许我使用 GroupedStackedBarRenderer 的绘图。

基本上,我正在绘制连接到 radio (代表图中的条)的每个电台(代表条中的堆栈)的广播时间,用于接收和传输(RX 和 TX)。
情节看起来像这样: enter image description here

有两个类别(RX 和 TX)和多个组( radio )。如您所见,目前 radio MAC 无法读取。我想旋转这些标签,以使情节清晰。
我使用了以下代码来尝试旋转标签: subCategoryAxis.setCategoryLabelPositions(CategoryLabelPositions.createUpRotationLabelPositions(Math.PI/4));
这仅旋转类别(RX 和 TX)的标签,而不是组( radio MAC)的标签: enter image description here

我还尝试了其他几种方法,但所有这些方法都无济于事......我如何旋转这些子标签?

这是我用来填充标签的底层代码:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com