Flex的图表提供了非常好的基本功能,但其实大家最关注的还是图表的样式,在这里笔者简单介绍了一些样式的设置,让你的图表漂亮起来。
下面举一些例子,大家举一反三,试试各种属性,调出想要的效果
1.修改横轴样式
通过Chart的verticalAxisRenderers样式来设置横轴的Renderer,通过Renderer的各种属性来调整样式。
还是基于上一篇的代码,在其中新增Renderer部分,下面把完整的代码贴出来:
<mx:XMLList id="exampleData">
<object date="201011" val="213" val2="321"></object>
<object date="201012" val="123" val2="11"></object>
<object date="201013" val="4" val2="331"></object>
<object date="201014" val="555" val2="112"></object>
</mx:XMLList>
<mx:LineChart x="0" y="0" id="linechart1" width="100%" height="100%"
dataProvider="{exampleData}"
/>
<mx:horizontalAxis>
<mx:CategoryAxis id="horiAxis" categoryField="@date"/>
</mx:horizontalAxis>
<mx:verticalAxis>
<mx:LinearAxis id="vertAxis" />
</mx:verticalAxis>
<mx:series>
<mx:LineSeries yField="@val" adjustedRadius="1" form="seqment" displayName="数据A"/>
<mx:LineSeries yField="@val2" adjustedRadius="1" form="seqment" displayName="数据B"/>
</mx:series>
<!-- 新增的Renderer -->
<mx:horizontalAxisRenderers>
<mx:AxisRenderer axis="{horiAxis}" labelAlign="center">
<mx:axisStroke>
<mx:Stroke weight="1" color="#000000" caps="none"/>
</mx:axisStroke>
</mx:AxisRenderer>
</mx:horizontalAxisRenderers>
</mx:LineChart>
可以看到,我们向LineChart的horizontalAxisRenderers样式中,放入了一个AxisRenderer对象,而通过设置它的labelAlign属性,将横轴每个点的标签居中显示,并在axisStroke样式中放了一个Stroke对象,这个就是很轴线条的样式
横轴已经由很粗的灰色线条,变成了黑色。
同理,我们将纵轴也改成这样:
<mx:verticalAxisRenderers>
<mx:AxisRenderer axis="{vertAxis}" placement="right">
<mx:axisStroke>
<mx:Stroke weight="1" color="#000000" caps="none"/>
</mx:axisStroke>
</mx:AxisRenderer>
</mx:verticalAxisRenderers>
其中placement是轴显示的位置,左边或右边,默认是左边。
2.背景样式
默认的背景,就是那些横条参考线,感觉并不是特别好看,大多数的图表,背景都是用网格的,这里可以通过backgroundElements属性来设置,给LineChart增加一段代码:
<mx:backgroundElements>
<mx:GridLines direction="both">
<mx:horizontalStroke>
<mx:Stroke weight="1" alpha=".1"/>
</mx:horizontalStroke>
<mx:horizontalFill>
<mx:SolidColor color="#FFFFFF" alpha=".2"/>
</mx:horizontalFill>
<mx:verticalStroke>
<mx:Stroke weight="1" alpha=".1"/>
</mx:verticalStroke>
</mx:GridLines>
</mx:backgroundElements>
GridLines的direction就是控制背景的样式,有横向(horizontal),纵向(vertical),还有网格(both)
其实设置好这个属性为both,就会变成网格的样式,但不太好看,通过其内部的几个Stroke和SolidColor来控制线条样式和颜色,使得图表更加丰富
3.线条样式
线条样式同样可以个性定制,这里给出一个渐变线条的示例,大家可以调一调参数,看看效果来加强理解,具体到每个参数,可以参看API文档:
将原代码中的标记整体替换成如下代码:
<mx:series>
<mx:LineSeries yField="@val" adjustedRadius="2" form="seqment" displayName="数据A">
<mx:lineStroke>
<mx:LinearGradientStroke weight="5" caps="square" spreadMethod="reflect">
<mx:GradientEntry color="#ff9262" ratio=".3" alpha="1"/>
<mx:GradientEntry color="#ffb359" ratio=".8" alpha="1"/>
</mx:LinearGradientStroke>
</mx:lineStroke>
</mx:LineSeries>
<mx:LineSeries yField="@val2" adjustedRadius="1" form="seqment" displayName="数据B">
<mx:lineStroke>
<mx:LinearGradientStroke weight="5" caps="square" spreadMethod="reflect">
<mx:GradientEntry color="#a0c717" ratio=".3" alpha="1"/>
<mx:GradientEntry color="#d2f45c" ratio=".8" alpha="1"/>
</mx:LinearGradientStroke>
</mx:lineStroke>
</mx:LineSeries>
</mx:series>
修改后,还是两条LineSeries,但为其lineStroke样式设置了一个LinearGradientStroke对象,这个对象就是渐变的Stroke,通过GradientEntry对象来设置各渐变颜色值
4.修改Tip信息
一般的图表都需要查看每个点的具体信息,默认Flex的Chart已经帮我们实现了一个Tip,只是默认关闭的,这里通过LineChart的showDataTips属性开启,将代码修改如下:
<mx:LineChart x="0" y="0" id="linechart1" width="100%" height="100%"
dataProvider="{exampleData}" showDataTips="true"
> ...
默认样式已经不错,但有时需求可能会有固定信息格式,这个时候,我们可以为LineChart的dataTipFunction属性设置一个回调函数,来自定义显示的内容:
<mx:LineChart x="0" y="0" id="linechart1" width="100%" height="100%"
dataProvider="{exampleData}" showDataTips="true"
dataTipFunction="tipFormat"
> ..
并添加这个函数,返回要显示的字符串:
<mx:Script>
<![CDATA[
import mx.charts.HitData;
import mx.charts.series.items.LineSeriesItem;
privatefunction tipFormat(e:HitData):String{
var item:XML=XML(LineSeriesItem(e.chartItem).item);
var rs:String=item.@date+"<br/><b><font COLOR='#FF00000'>"+item.@val
+"</font></b>,<font COLOR='#445700'>"+item.@val2
+"</font>";
return rs;
}
]]>
</mx:Script>
从代码中可以看出,该函数的参数:e:HitData里面保存了这个点的数据,返回的格式是个HTML,这样灵活性很大。
有时,我们对Tip的要求还不止这些,甚至于要改动其样式,当然也可以,还是Renderer,LineChart的dataTipRenderer属性。
这里直接给出代码,就不过多解释了,实现原理大家自己看吧:
<mx:LineChart x="0" y="0" id="linechart1" width="100%" height="100%"
dataProvider="{exampleData}" showDataTips="true"
dataTipFunction="tipFormat"
dataTipRenderer="{MyDataTip}"
> ...
package
{
import flash.display.GradientType;
import flash.display.Graphics;
import flash.geom.Matrix;
import flash.text.TextField;
import mx.charts.chartClasses.DataTip;
publicclass MyDataTip extends DataTip
{
privatevar myText:TextField;
publicfunction MyDataTip() {
super();
}
overrideprotectedfunction createChildren():void{
super.createChildren();
myText = new TextField();
}
overrideprotectedfunction updateDisplayList(w:Number, h:Number):void {
super.updateDisplayList(w, h);
if(data.hasOwnProperty('text')) {
myText.text = data.text;
} else {
myText.text = data.toString();
}
var borderColor:uint=this.data.contextColor;
this.setStyle("textAlign","center");
var g:Graphics = graphics;
g.clear();
g.lineStyle(1,borderColor);
var m:Matrix = new Matrix();
m.createGradientBox(w+100,h,0,0,0);
g.beginGradientFill(GradientType.LINEAR,[0xe6f5ff,0xFFFFFF],[.8,1],[0,255],m,null,null,0);
g.drawRect(-50,0,w+100,h);
g.endFill();
g.lineStyle();
}
}
}
分享到:
相关推荐
改变datatips显示字体大小的方法,也可以跟据这种方法自己定义别的样式。 包含了linechart样式的改变,颜色也可以改变
Flex Chart Sytles 简单示例 基本样式使用,网上搜到的收藏下。
以下是我最近做flex组件编程时的总结,是主要针对lineChart的用法,其中某些属性对同是有横纵坐标的columnChart、barChart等都有效,比如对背景的网格线、横纵坐标线条的粗细颜色和标签的设置都有效。
flex LineChart实例个人项目开发中的一个页面
Flex 全景图源码-----街景 Flex 全景图源码-----街景
flex3读书笔记----flex整合hibernate
跟我StepByStep学FLEX教程------王一松
跟我StepByStep学FLEX教程------王一松.pdf
1 16 跟我StepByStep学FLEX教程------Demo8之样式和主题 1 17 跟我StepByStep学FLEX教程------自定义主题 1 18 跟我StepByStep学FLEX教程------FlexUnit4 alpha 1 0 5 4发布 1 19 跟我StepByStep学FLEX教程------...
flex项目开发过程中的动态linechart,主要是曲线可以增量的刷新,纵坐标、刷新频率可以调整,也可以稍微改下根据配置进行曲线设置,这个是少了获取数据的方法用随机数代替,项目中用到动态linechart的可以参考。
spring-flex-1.5.0.M2-dist.zip spring-flex-1.5.0.M2 spring-flex-1.5.0.M2.jar SBI
Flex 工程源码--EmployeeMgmt-Flex.7z
Flex_Viewer解析-----结构(1).doc 还有(2)和(3) ,你可以在下载了1之后再看是否有必要下载2和3,我觉得是Flex编程方面很好的参考资料
Flex_Viewer解析-----结构(2).doc 还有(1)和(3) ,你可以在下载了1之后再看是否有必要下载2和3,我觉得是Flex编程方面很好的参考资料
Flex3界面布局中文教程--一路风尘制作
Flex与ActionScript3程序开发-样章Flex与ActionScript3程序开发-样章Flex与ActionScript3程序开发-样章
非常好DEMO参考,这个项目已经转到Apache名下了,最新的版本1.2,308个例子,已经全站打包,搜索:flex-tour-de-flex-component-explorer-1.2-308demo。开源代码http://flex.apache.org/download-tourdeflex.html
资源包含flex-2.5.4+bison-2.4.1+mingw,此外包含本人写的测试源码,编译命令及详细过程,另附一些有用的文章pdf,用于编译原理课程学习。详细使用参考文章:...