我使用LogAxis在Flex中创建了折线图。 Flex在与Log轴的主刻度标记相同的位置绘制次要刻度线,因此我需要手动绘制次刻度线。
我是Flex新手,我尝试使用mxml中的backgroundElements中的CartesianDataCanvas,然后使用ActionScript在数据画布上使用moveTo(x1,y1)和lineTo(x2,y2)绘制线条,它在(x1,y1)和(x2,y2)之间画一条线。
上述方法的问题是刻度标记长度是图表区域的函数(取决于浏览器窗口大小)。
我需要的是一种方法:
(1)从数据坐标开始(例如moveTo(x1,y1)可以正常工作)
(2)在屏幕坐标上绘制一条线(例如lineTo(x_screen,y_screen),其中x_screen和y_screen是屏幕坐标)。
在Flex / AS3中有什么能够实现这一目标吗?
或者,我可以在上述两个步骤中使用屏幕坐标吗?如果是这样,如何在屏幕和数据坐标之间进行转换?例如,屏幕的右上角是否总是一个固定的数据坐标,我可以参考它创建这样的转换?
或者,我可以在Illustrator中保存一个五像素的行,然后只是以某种方式将该图像粘贴到图表中吗?如果是这样,如何将其准确粘贴到数据坐标?
非常感谢任何想法或评论。
答案 0 :(得分:1)
我建议您创建自定义轴渲染器。扩展AxisRenderer
类,覆盖updateDisplayList
方法。由于负责渲染轴的所有方法都是private
,因此只需将它们复制到您的类中,然后对drawTicks
方法进行必要的更改。但是你需要花一些时间来理解渲染逻辑。
然后将渲染器应用于图表。
<mx:LineChart>
<mx:horizontalAxisRenderers>
<custom:CustomAxisRenderer/>
</mx:horizontalAxisRenderers>
</mx:LineChart>