在现代软件开发中,数据可视化是一个重要的组成部分。wxFreeChart是一个强大的图表库,它提供了丰富的图表类型和灵活的数据源集成方式。它使用模型-视图-控制器(Model-View-Controller, MVC)模式,使得数据的表示和处理分离,从而提高了代码的可维护性和可扩展性。
图表类型支持
wxFreeChart支持多种图表类型,包括但不限于:
- 折线图(Line XY charts)
- 直方图(Histogram XY charts)
- 区域图(Area XY charts)
- 条形图(Bar charts)
- 堆叠条形图(Stacked bar charts)
- 分层条形图(Layered bar charts)
- OHLC条形金融图表(OHLC bars financial charts)
- OHLC蜡烛图金融图表(OHLC candlesticks financial charts)
- 气泡图(Bubble charts)
- 甘特图(Gantt charts)
特性
wxFreeChart提供了以下特性:
- 标记(Markers)
- 十字准线(Crosshair)
- 动态图表(Dynamic charts)
- 无限数量的轴(Unlimited amount of axes)
- 渐变背景和条形(Gradient backgrounds and bars)
- 图例(Legend)
- 根据各种条件控制条形和蜡烛图的颜色(Bars and candlestick colors can be controlled by various conditions)
- 图表的缩放和平移(Zoom and pan for charts)
设计概念
wxFreeChart的设计基于以下几个主要概念:
- 数据集(Dataset)
- 渲染器(Renderer)
- 轴(Axis)
- 绘图(Plot)
- 图表(Chart)
- 图表面板(wxChartPanel)
数据集是数据访问接口,它是MVC模式中的模型部分。它不直接持有数据,而是定义了数据接口。有多种实现方式,如果现有的实现不满足需求,可以编写自己的数据集实现。数据集的类型包括:
- XY数据集(XYDataset):基于XY坐标的图表数据。
- 类别数据集(CategoryDataset):适用于一个轴上有数字/字符串信息,另一个轴上有字符串信息的图表,以及饼图。
- OHLC数据集(OHLCDataset):适用于金融报价图表。
- XYZ数据集(XYZDataset):适用于气泡图。
渲染器是执行数据绘制的对象。对于一种数据集类型,可以有多个渲染器。例如,XY数据集可以渲染为线条、直方图或区域图,OHLC数据集可以绘制为条形图或蜡烛图。渲染器的类型包括:
- XY渲染器(XYRenderer):用于绘制XY数据。
- 条形渲染器(BarRenderer):用于绘制条形图:普通、堆叠、分层。
- OHLC渲染器(OHLCRenderer):用于绘制金融报价数据。
- XYZ数据集渲染器(XYZDataset Renderer):用于绘制XYZ数据。
轴是执行数据缩放和轴渲染的对象。轴的类型包括:
- 数字轴(NumberAxis):用于显示数字标签和缩放数字数据。
- 类别轴(CategoryAxis):用于字符串标签。
- 日期轴(DateAxis):用于日期/时间标签。
- 复合日期轴(CompDateAxis):用于日期/时间标签的间隔轴。
绘图是连接轴、数据集、视觉对象(标记、十字准线)的对象。它包含标题、背景等。
图表包含标题、绘图等。
- 标记(Markers):用于标记数据值和/或区间。标记与数据集相关联。标记类型包括:
- 点标记(Point marker):标记单个点值。
- 线标记(Line marker):用于标记指定值作为线。
- 范围标记(Range marker):用于标记指定值范围。
- 区域绘制(Area draws):执行绘制背景(绘图、图表)、条形图中的条形、图例符号等的对象。区域绘制有两种类型:填充和渐变。
- 图例(Legend):绘制图例符号和系列名称。它在绘图中有位置,用于绘制标签的字体等。图例可以是垂直的或水平的。
- 轴共享(AxisShare):辅助对象,使得创建组合轴绘图成为可能。
- 多绘图(Multiplot):一种特殊的绘图,包含多个子图。它用于