`
lk557
  • 浏览: 144062 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Flex LineChart三部曲-样式篇

 
阅读更多

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();
  }
}

}

分享到:
评论

相关推荐

    flex 改变linechart datatips 显示样式代码

    本篇将详细介绍如何改变Flex LineChart的Datatips显示样式,包括字体大小以及自定义其他样式。 Flex中的Datatips默认样式可能不能满足所有设计需求,因此我们需要对其进行定制。首先,我们可以通过使用`...

    Flex LineChart

    Flex Chart Sytles 简单示例 基本样式使用,网上搜到的收藏下。

    flex LineChart

    以下是我最近做flex组件编程时的总结,是主要针对lineChart的用法,其中某些属性对同是有横纵坐标的columnChart、barChart等都有效,比如对背景的网格线、横纵坐标线条的粗细颜色和标签的设置都有效。

    flex LineChart实例

    根据提供的文件信息,我们可以从标题、描述以及部分代码中提炼出与Flex LineChart相关的知识点。 ### Flex LineChart实例 #### 标题理解 标题“Flex LineChart实例”明确指出这是一个关于Flex框架下的线形图(Line...

    跟我StepByStep学FLEX教程------王一松.pdf

    #### 三、FLEX界面设计与交互 - **可视化页面组件**:介绍Flex中常用的UI组件,如按钮、文本框等,并演示如何布局这些组件来构建用户界面。 - **MXML**:一种XML标记语言,用于定义Flex应用程序的结构和外观。 - ...

    flex------组件-----数据可视化

    它支持多种图表类型,如LineChart(折线图)用于显示连续数据的变化趋势,BarChart(柱状图)用于比较不同类别的数量,PieChart(饼图)用于展示部分与整体的关系,以及AreaChart(面积图)和Histogram(直方图)等...

    flex_linechart

    flex项目开发过程中的动态linechart,主要是曲线可以增量的刷新,纵坐标、刷新频率可以调整,也可以稍微改下根据配置进行曲线设置,这个是少了获取数据的方法用随机数代替,项目中用到动态linechart的可以参考。

    跟我StepByStep学FLEX教程------王一松

    - **样式系统**:理解Flex样式系统的工作原理。 - **主题应用**:演示如何为应用程序应用不同的主题。 #### 16. 自定义主题 - **主题文件结构**:介绍如何创建自定义主题文件。 - **样式规则**:学习如何定义具体...

    flex-messaging-core-4.7.3.jar

    flex-messaging-core-4.7.3.jar 最新版,下载了好长时间才下载下来,亲测可用!

    flex布局-flex-layout-master.zip

    Flex布局,全称为“Flexible Box”,也常被称为 Flexbox,是一种在CSS3中引入的布局模式,用于处理复杂的网页布局问题。它旨在提供一种更加灵活、动态的方式来组织和对齐内容,尤其适用于单列和多列布局,以及响应式...

    flex带时分秒日历---完善版

    在IT行业中,Flex是一种流行的富互联网应用程序(RIA)开发框架,由Adobe公司提供,主要用于构建交互性强、用户体验良好的Web应用。本项目“flex带时分秒日历---完善版”显然是一个基于Flex技术的日历组件,它不仅...

    Flex chart line 线性表(单线和双线)

    Flex Chart Line是Adobe Flex框架中的一个关键组件,用于创建数据可视化图表,特别是线性图表。在本场景中,我们关注的是“单线”和“双线”两种类型的线性图表。Flex 4.5是Adobe Flex SDK的一个版本,它提供了更...

    Flex 工程源码--EmployeeMgmt-Flex.7z

    这个压缩包"Flex 工程源码--EmployeeMgmt-Flex.7z"包含了名为"EmployeeMgmt-Flex"的Flex项目源代码,很可能是用于员工管理的系统。下面我们将详细探讨Flex的相关知识点。 1. **Flex框架**:Flex是一套完整的开发...

    FLEX提高篇--------AIR应用程序的托盘及托盘菜单的制作

    标题中的"FLEX提高篇--------AIR应用程序的托盘及托盘菜单的制作"表明这篇内容主要讲解如何在Adobe Integrated Runtime (AIR)环境中使用Flex技术来创建应用程序,并且关注于实现托盘图标及其关联的托盘菜单功能。...

    FLEX入门实例--------各种Effect的综合运用

    这个链接指向的是InfoQ中国(原iteye)上的一篇博客文章,作者Hacker47分享了关于Flex Effect的深入见解。访问这个链接,读者可以找到更多关于如何使用和实现这些Effect的详细步骤和技巧。 在"标签"中提到的"源码...

    flex-2.6.4.tar

    flex-2.6.4

Global site tag (gtag.js) - Google Analytics