Я работаю с компонентами PieChart и PieSeries во Flex и столкнулся с проблемой. Когда для свойства labelPosition PieSeries установлено значение «inside» и в круговой диаграмме имеется только один срез, метка не отображается.
Глядя на документы, я догадываюсь о его причуде, связанной с удалением внутренних меток. Документ читается как:
Нарисуйте метки внутри диаграммы, центрированные примерно на семь десятых части пути вдоль каждого клина. Сокращайте этикетки, чтобы они не мешали друг другу. Если метки сокращены ниже свойства calloutPointSize, удалите их. Когда две метки перекрываются, Flex отдает приоритет меткам для больших срезов.
Один из способов обойти это - обнаружить 1 срез и добавить еще один элемент в dataProvider с нулевым значением, но отображаемая метка все еще не там, где мне хотелось бы, и, похоже, нет способа ее переместить. .
Другим решением было бы обернуть PieChart холстом и просто отобразить текст сверху в том же формате, что и для меток, но я бы действительно предпочел не идти по этому пути (включая отображение текста на холсте диаграммы). , что может быть немного меньше взлома, но все же взломать).
Вот код, демонстрирующий мою проблему:
<?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>
Кто-нибудь сталкивался с этой проблемой или знает обходное / хорошее решение?