|
| 1 | +# 扩展图表:蜡烛图 |
| 2 | + |
| 3 | +蜡烛图(K 线图)是金融领域常用的图表类型,用于展示一段时间内的价格走势,包括开盘价、最高价、最低价和收盘价四个关键价格点。 |
| 4 | + |
| 5 | +VChart 提供了蜡烛图扩展组件,支持灵活的样式配置和交互功能,能够满足各种金融数据可视化需求。 |
| 6 | + |
| 7 | + |
| 8 | + |
| 9 | +## 如何使用扩展图表 |
| 10 | + |
| 11 | +蜡烛图需要手动注册后才能使用,注册和使用方式如下: |
| 12 | + |
| 13 | +```js |
| 14 | +import VChart from '@visactor/vchart'; |
| 15 | +import { registerCandlestickChart } from '@visactor/vchart-extension'; |
| 16 | + |
| 17 | +const spec = { |
| 18 | + type: 'candlestick' |
| 19 | + // your spec |
| 20 | +}; |
| 21 | +registerCandlestickChart(); |
| 22 | + |
| 23 | +const vchart = new VChart(spec, { dom: 'chart' }); |
| 24 | +vchart.renderSync(); |
| 25 | +``` |
| 26 | + |
| 27 | +如果是通过 cdn 引入的方式,注册方式如下: |
| 28 | + |
| 29 | +```html |
| 30 | +<script src="https://cdn.jsdelivr.net/npm/@visactor/vchart/build/index.min.js"></script> |
| 31 | +<script src="https://cdn.jsdelivr.net/npm/@visactor/vchart-extension/build/index.min.js"></script> |
| 32 | +<script> |
| 33 | + const spec = { |
| 34 | + type: 'candlestick' |
| 35 | +
|
| 36 | + // your spec |
| 37 | + }; |
| 38 | + VChartExtension.registerCandlestickChart(); |
| 39 | +
|
| 40 | + const vchart = new VChart.default(spec, { dom: 'chart' }); |
| 41 | + vchart.renderSync(); |
| 42 | +</script> |
| 43 | +``` |
| 44 | + |
| 45 | +## 相关配置项 |
| 46 | + |
| 47 | +```js |
| 48 | +export interface ICandlestickSeriesSpec |
| 49 | + extends Omit<ICartesianSeriesSpec, 'xField' | 'yField' | 'direction'>, |
| 50 | + IAnimationSpec<SeriesMarkNameEnum.boxPlot, string> { |
| 51 | + type: 'candlestick'; |
| 52 | + /** |
| 53 | + * 时间轴字段 |
| 54 | + */ |
| 55 | + xField: string | string[]; |
| 56 | + /** |
| 57 | + * 开盘价字段 |
| 58 | + */ |
| 59 | + openField?: string; |
| 60 | + /** |
| 61 | + * 最高价字段 |
| 62 | + */ |
| 63 | + highField?: string; |
| 64 | + /** |
| 65 | + * 最低价字段 |
| 66 | + */ |
| 67 | + lowField?: string; |
| 68 | + /** |
| 69 | + * 收盘价字段 |
| 70 | + */ |
| 71 | + closeField?: string; |
| 72 | + /** |
| 73 | + * 上涨蜡烛图颜色 |
| 74 | + */ |
| 75 | + rising?: IMarkSpec<ICandlestickMarkSpec>; |
| 76 | + /** |
| 77 | + * 下跌蜡烛图颜色 |
| 78 | + */ |
| 79 | + falling?: IMarkSpec<ICandlestickMarkSpec>; |
| 80 | + /** |
| 81 | + * 平盘蜡烛图颜色 |
| 82 | + */ |
| 83 | + doji?: IMarkSpec<ICandlestickMarkSpec>; |
| 84 | + /** |
| 85 | + * 蜡烛图标记配置 |
| 86 | + */ |
| 87 | + candlestick?: IMarkSpec<ICandlestickMarkSpec>; |
| 88 | +} |
| 89 | + |
| 90 | +export interface ICandlestickMarkSpec extends ICommonSpec { |
| 91 | + /** |
| 92 | + * 盒子宽度 |
| 93 | + */ |
| 94 | + boxWidth?: number; |
| 95 | + /** |
| 96 | + * 盒子填充颜色,为空则不填充 |
| 97 | + */ |
| 98 | + boxFill?: string | ((datum: Datum) => string); |
| 99 | + /** |
| 100 | + * 最低价 |
| 101 | + */ |
| 102 | + low?: (datum: Datum) => number; |
| 103 | + /** |
| 104 | + * 收盘价 |
| 105 | + */ |
| 106 | + close?: (datum: Datum) => number; |
| 107 | + /** |
| 108 | + * 开盘价 |
| 109 | + */ |
| 110 | + open?: (datum: Datum) => number; |
| 111 | + /** |
| 112 | + * 最高价 |
| 113 | + */ |
| 114 | + high?: (datum: Datum) => number; |
| 115 | +} |
| 116 | +``` |
| 117 | + |
| 118 | +## 蜡烛图示例 |
| 119 | + |
| 120 | +- [基础蜡烛图](/vchart/demo/candlestick-charts/candlestick-basic) |
| 121 | +- [蜡烛与均线组合用法](/vchart/demo/candlestick-charts/candlestick-with-MA) |
| 122 | + |
| 123 | +## 配置详解 |
| 124 | + |
| 125 | +### 数据字段配置 |
| 126 | + |
| 127 | +蜡烛图需要配置以下数据字段: |
| 128 | + |
| 129 | +- `xField`: 时间轴字段,用于展示时间维度 |
| 130 | +- `openField`: 开盘价字段 |
| 131 | +- `highField`: 最高价字段 |
| 132 | +- `lowField`: 最低价字段 |
| 133 | +- `closeField`: 收盘价字段 |
| 134 | + |
| 135 | +### 样式配置 |
| 136 | + |
| 137 | +蜡烛图支持三种状态的样式配置: |
| 138 | + |
| 139 | +- `rising`: 上涨状态(收盘价 > 开盘价)的样式配置 |
| 140 | +- `falling`: 下跌状态(收盘价 < 开盘价)的样式配置 |
| 141 | +- `doji`: 平盘状态(收盘价 = 开盘价)的样式配置 |
| 142 | + |
| 143 | +每种状态都可以配置以下样式属性: |
| 144 | + |
| 145 | +- `boxWidth`: 蜡烛图盒子的宽度 |
| 146 | +- `boxFill`: 盒子的填充颜色 |
| 147 | +- `stroke`: 边框颜色 |
| 148 | +- `lineWidth`: 边框宽度 |
| 149 | + |
| 150 | +### 动画配置 |
| 151 | + |
| 152 | +蜡烛图内置了入场和出场动画,可以通过 `animation` 配置自定义动画效果。默认动画为 `candlestickScaleIn` 和 `candlestickScaleOut`。 |
| 153 | + |
| 154 | +## 最佳实践 |
| 155 | + |
| 156 | +1. **数据准备**:确保数据包含完整的时间、开盘价、最高价、最低价和收盘价字段 |
| 157 | +2. **颜色配置**:建议上涨使用红色、下跌使用绿色,符合国内市场习惯 |
| 158 | +3. **响应式设计**:在小屏幕设备上,可以适当减小 `boxWidth` 以避免蜡烛图重叠 |
| 159 | +4. **组合图表**:可以与成交量柱状图组合,提供更全面的市场分析视图 |
0 commit comments