PieChart этикетка с одним срезом - PullRequest
3 голосов
/ 12 декабря 2008

Я работаю с компонентами 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>

Кто-нибудь сталкивался с этой проблемой или знает обходное / хорошее решение?

Ответы [ 2 ]

1 голос
/ 07 января 2009

Все, что я могу сделать, это указать этот отчет об ошибке , который выглядит как то, с чем вы столкнулись.

Боюсь, я не могу заставить работать предложенный патч, может быть, вам повезет больше.

0 голосов
/ 17 июня 2009

Диаграммы Flex предназначены для рисования через CartesianDataCanvas.

См. «Рисование на элементах управления диаграммой» в Руководство разработчика по визуализации данных Flex / Компоненты диаграмм Flex / Использование событий и эффектов в диаграммах

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...