轴标签在Flex图表上的位置,以及如何相对于它们定位事物

时间:2009-07-10 15:06:00

标签: flex actionscript flex-charting

我正在使用位于BarChart右侧的AxisRenderer,并且正在寻找一种方法来为它们上方的AxisRenderer中的值定位标题。

如何在轴渲染器中找到标签的位置?似乎AxisRenderer.width返回图表的宽度,AxisRenderer.x返回整个图表的边缘。

以下是对图片的尝试:

                                Title
xxxxxxxxxxxxxxxxxxxxx   
xxxxxxxxxxxxxxxxxxxxx           axis value
xxxxxxxxxxxxxxxxxxxxx   

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  axis value
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  

xxxxxxxxx   
xxxxxxxxx                       axis value
xxxxxxxxx   

我正在尝试将标题置于AxisRenderer定位的“轴值”之上。基本上,对于非绝对定位的轴,您如何确定它的位置?

5 个答案:

答案 0 :(得分:3)

我已经对这个问题进行了一些挖掘,我可能得出了相同的结论 - 没有简单的方法可以做到这一点。根据我的经验,AxisRenderers在引擎盖下非常复杂(并没有以特别可理解的方式编写)。

然而,要实现你想要实现的目标,你可以创建自己的IAxisRenderer来构建你想要的东西(这是一场噩梦......我已经完成了它并且很痛苦)。您还可以尝试扩展AxisRenderer并尝试覆盖在构建的titleRenderer中定位它的特定方法(同样,这不是特别容易或干净,因为在我看来AxisRenderer没有考虑到扩展而构建)。

两种简单的解决方案可以为您节省大量时间。在一个看起来不错的地方硬编码标题的位置。我会说在大多数情况下轴标签不会经常改变,尽管显然我在那里做出假设。在我看来,最简单的解决方案......改变设计。您可能需要花费相当多的时间才能完全按照自己的意愿获得标题。你需要问问自己,你从中获得的价值是否值得你投入的努力。

抱歉,我无法再提供任何帮助了。

Ĵ

答案 1 :(得分:2)

使用类似于上述建议的东西,我能够计算出位于右侧的AxisRenderer所需的x和宽度。在我的例子中,我使用GridLines而不是CartesianDataCanvas,我也有左右垂直的AxisRenderer。

将UPDATE_COMPLETE事件的事件侦听器添加到垂直AxisRenderers。计算右AxisRenderer的宽度:

var rightGutterWidth:Number = chart.width - gridLines.width - Math.abs(leftAxisRenderer.gutters.width);

对于你的X标签位置,你可以做类似的事情:

var rightGutterX:Number = chart.x + gridLines.width + Math.abs(leftAxisRenderer.gutters.width);

答案 2 :(得分:1)

就个人而言,我不have the source to flex-charting。你可能已经完成了这个,但是可以看一下flex源,看看你能搞清楚什么?

否则,也许你知道图表上每个条形的值和轴的比例......理论上你可以计算你想要放置文本的位置吗?

答案 3 :(得分:1)

使用CarthesianDataCanvas查看图表。

<Chart>
    <mx:annotationElements>
        <mx:CartesianDataCanvas id="canvas" includeInRanges="true"/>
    </mx:annotationElements>
</Chart>

参见文档Adobe:http://livedocs.adobe.com/flex/3/html/help.html?content=charts_types_06.html - &gt;在图表中使用事件和效果 - &gt;绘制图表控件

答案 4 :(得分:0)

查看Adobe关于数据标签的教程:

Adding data labels to charts

这是您正在寻找的还是我误解了您的问题?