Flex BarChart Stacked BarSeries labelFunction - Счетчик тактов по сравнению с суммированной суммой - PullRequest
0 голосов
/ 11 мая 2011

У меня есть гистограмма со столбиками, которые нуждаются в особой маркировке. Каждый бар должен отображать значение бара, которому предшествует метка. Чтобы поддержать это, я создал собственную функцию labelFunction для различных BarSeries в BarChart (см. Ниже).

Функция успешно отображает метки, но в случае сгруппированных столбцов значения меток не отображают то, что я хочу. Вместо того, чтобы показывать значение бара, он показывает сумму баров в стеке. Например, если BarSet содержит три бара со значениями 3, 4 и 5, метки отображаются не как «3», «4» и «5», а как «3», «7» и «12». ».

Из этого примера похоже, что я могу добиться желаемых результатов, создав отдельную функцию labelFunction для каждого отдельного BarSeries и получив доступ к определенному свойству (например, data.item. @ FooCount). Тем не менее, я бы предпочел иметь только одну универсальную функцию, если это возможно. Есть ли другое свойство, к которому я могу получить доступ вместо xNumber, которое дает мне конкретное значение бара, а не сумму?

Обратите внимание, что поведение метки по умолчанию (т.е. не устанавливает labelFunction) отображает отдельные значения, а не суммы ... Так что я предполагаю, что это возможно, надеюсь, без большого количества дополнительных скачков, через которые можно перейти. :)

Моя пользовательская меткаФункция:

  private function setCustomLabel(item:ChartItem, series:Series):String
  {

    var data:BarSeriesItem = BarSeriesItem(item);
    var currentSeries:BarSeries = BarSeries(series);

    return currentSeries.displayName + ": " + data.xNumber;

  }

Фрагмент некоторого кода BarChart:

  <mx:BarChart id="myChart" showDataTips="true"
               height="180" width="100%">

      ...

      <mx:BarSet type="stacked">
        <mx:BarSeries displayName="Foo Count" xField="fooCount"
                      labelFunction="setCustomLabel" />
        <mx:BarSeries displayName="Bar Count" xField="barCount"
                      labelFunction="setCustomLabel" />
      </mx:BarSet>

    </mx:series>
  </mx:BarChart>

Спасибо!

1 Ответ

2 голосов
/ 11 мая 2011

Я считаю, что вы хотите сделать, это использовать dataProvider.Прямо сейчас, ваш xNumber был бы для стекового ряда, а не для входящих данных.

Итак, я бы попробовал что-то вроде этого:

private function setCustomLabel(item:ChartItem, series:Series):String
  {

    var data:BarSeriesItem = BarSeriesItem(item);
    var currentSeries:BarSeries = BarSeries(series);

    return currentSeries.displayName + ": " + data.item[currentSeries.xField];

  }

Это не проверено, ноЯ думаю, у вас есть идея получить необработанные данные вместо того, чтобы использовать то, что показывает элемент.

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