apache-flex - 带有单个切片的饼图标签

标签 apache-flex charts

我正在使用 Flex 中的 PieChart 和 PieSeries 组件,但遇到了问题。当 PieSeries 的 labelPosition 属性设置为“inside”并且饼图中只有一个切片时,标签不会显示。

查看文档,我猜它的一些怪癖与删除内部标签的时间有关。文档内容如下:

Draw labels inside the chart, centered approximately seven tenths of the way along each wedge. Shrink labels to ensure that they do not interfere with each other. If labels are shrunk below the calloutPointSize property, remove them. When two labels overlap, Flex gives priority to labels for larger slices.



一种解决方法是检测 1 个切片并将另一个元素添加到具有零值的 dataProvider 中,但显示的标签仍然不是我想要的位置,而且似乎没有办法移动它。

另一种解决方案是用 Canvas 包装 PieChart,并以与我用于标签的格式相同的格式在顶部呈现文本,但我真的不想走这条路(包括在图表的 Canvas 上呈现文本,这可能稍微少一点黑客,但仍然是黑客)。

这是一些演示我的问题的代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
  xmlns:mx="http://www.adobe.com/2006/mxml"
  layout="vertical"
  backgroundColor="white"
  >

  <mx:Script>
    <![CDATA[
      import mx.collections.ArrayCollection;
      [Bindable] public var pieData:ArrayCollection = new ArrayCollection([
        {value: 50, label: "This is a\nlong label"}
      ]);
      [Bindable] public var pieData2:ArrayCollection = new ArrayCollection([
        {value: 50, label: "This is a\nlong label"},
        {value: 0, label: ""}
      ]);
    ]]>
  </mx:Script>

  <mx:HBox
    width="100%"
    height="100%"
    >
    <mx:PieChart
      width="100%"
      height="100%"
      >
      <mx:series>
        <mx:PieSeries
          dataProvider="{ pieData }"
          field="value"
          labelField="label"
          labelPosition="callout"
          />
      </mx:series>
    </mx:PieChart>
    <mx:PieChart
      width="100%"
      height="100%"
      >
      <mx:series>
        <mx:PieSeries
          dataProvider="{ pieData }"
          field="value"
          labelField="label"
          labelPosition="insideWithCallout"
          />
      </mx:series>
    </mx:PieChart>
    <mx:PieChart
      width="100%"
      height="100%"
      >
      <mx:series>
        <mx:PieSeries
          dataProvider="{ pieData }"
          field="value"
          labelField="label"
          labelPosition="inside"
          />
      </mx:series>
    </mx:PieChart>
  </mx:HBox>

  <mx:HBox
    width="100%"
    height="100%"
    >
    <mx:PieChart
      width="100%"
      height="100%"
      >
      <mx:series>
        <mx:PieSeries
          dataProvider="{ pieData2 }"
          field="value"
          labelField="label"
          labelPosition="callout"
          />
      </mx:series>
    </mx:PieChart>
    <mx:PieChart
      width="100%"
      height="100%"
      >
      <mx:series>
        <mx:PieSeries
          dataProvider="{ pieData2 }"
          field="value"
          labelField="label"
          labelPosition="insideWithCallout"
          />
      </mx:series>
    </mx:PieChart>
    <mx:PieChart
      width="100%"
      height="100%"
      >
      <mx:series>
        <mx:PieSeries
          dataProvider="{ pieData2 }"
          field="value"
          labelField="label"
          labelPosition="inside"
          />
      </mx:series>
    </mx:PieChart>
  </mx:HBox>

</mx:Application>

有没有人遇到过这个问题或知道解决方法/好的解决方案?

最佳答案

我能做的就是指出this bug report ,这看起来就是你遇到的。

恐怕我无法让建议的补丁正常工作,也许你会有更好的运气。

关于apache-flex - 带有单个切片的饼图标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/361316/

相关文章:

java - Flex - Java 字节到 mp3

apache-flex - 在 DisplayObjectContainer 上调用 addChild 或 removeChild 方法时会发生什么?

ios - 空气原生扩展 : iOS packaged dependencies (Firebase)

javascript - 使用 Google Charts API 使图表保持白色

javascript - 如何修改带幻灯片效果的饼图大小

apache-flex - 如何阻止用户使用旧版本的应用程序?

apache-flex - 什么是 SWC,我们何时/何地在 Flash 中使用 SWC

javascript - 当图表中特定 x 轴不存在数据时如何设置默认 y 轴值

c# - Microsoft 图表、MVC 3 和 Razor

javascript - Chart.js : Strange Visual appearing in top left corner?