• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# chart
2
3
4图表组件,用于呈现线形图、柱状图、量规图界面。
5
6> **说明:**
7>
8> 从API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
9
10## 子组件
11
12不支持。
13
14
15## 属性
16
17除支持[通用属性](js-service-widget-common-attributes.md)外,还支持如下属性:
18
19| 名称              | 类型                               | 默认值 | 必填 | 描述                                                         |
20| ----------------- | ---------------------------------- | ------ | ---- | ------------------------------------------------------------ |
21| type              | string                             | line   | 否   | 设置图表类型(不支持动态修改),可选项有:<br/>-&nbsp;bar:柱状图。<br/>-&nbsp;line:线形图。<br/>-&nbsp;gauge:量规图。<br/>-&nbsp;progress:进度类圆形图表。<br/>-&nbsp;loading:加载类圆形图表。<br/>-&nbsp;rainbow:占比类圆形图表。 |
22| options           | ChartOptions                       | -      | 否   | 图表参数设置,用于设置x轴、y轴的最小值、最大值、刻度数、是否显示,线条宽度、是否平滑等。(不支持动态修改),量规图不生效。 |
23| datasets          | Array\<ChartDataset>               | -      | 否   | 数据集合,用于设置多条数据集及其背景色,量规图不生效。       |
24| segments          | DataSegment \| Array\<DataSegment> |        | 否   | 进度类、加载类和占比类圆形图表使用的数据结构。<br/>DataSegment针对进度类和加载类圆形图表使用,Array\<DataSegment>针对占比类图标使用,DataSegment最多9个。 |
25| effects           | boolean                            | true   | 否   | 是否开启占比类、进度类圆形图表特效。                         |
26| animationduration | number                             | 3000   | 否   | 设置占比类圆形图表展开动画时长,单位为ms。                   |
27
28  **表1** ChartOptions
29
30| 名称     | 类型        | 默认值  | 必填   | 描述                                       |
31| ------ | --------- | ---- | ---- | ---------------------------------------- |
32| xAxis  | ChartAxis | -    | 是    | x轴参数设置。可以设置x轴最小值、最大值、刻度数以及是否显示。          |
33| yAxis  | ChartAxis | -    | 是    | y轴参数设置。可以设置y轴最小值、最大值、刻度数以及是否显示。          |
34| series | ChartAxis | -    | 否    | 数据序列参数设置,仅线形图支持。可以设置:<br>- 线的样式,如线宽、是否平滑。<br>- 线最前端位置白点的样式和大小。 |
35
36  **表2** ChartDataset
37
38| 名称          | 类型                                       | 默认值      | 必填   | 描述                   |
39| ----------- | ---------------------------------------- | -------- | ---- | -------------------- |
40| strokeColor | &lt;color&gt;                            | \#ff6384 | 否    | 线条颜色,仅线形图支持。         |
41| fillColor   | &lt;color&gt;                            | \#ff6384 | 否    | 填充颜色,线形图表示填充的渐变颜色。   |
42| data        | Array&lt;number&gt;&nbsp;\|&nbsp;Array\<Point&gt; | -        | 是    | 设置绘制线或柱中的点集。         |
43| gradient    | boolean                                  | false    | 否    | 设置是否显示填充渐变颜色,仅线形图支持。 |
44
45  **表3** ChartAxis
46
47| 名称       | 类型            | 默认值      | 必填   | 描述                                       |
48| -------- | ------------- | -------- | ---- | ---------------------------------------- |
49| min      | number        | 0        | 否    | 轴的最小值,不支持负数,仅线形图支持。                      |
50| max      | number        | 100      | 否    | 轴的最大值,不支持负数,仅线形图支持。                      |
51| axisTick | number        | 10       | 否    | 轴显示的刻度数量。<br/>仅支持1~20,且具体显示的效果与如下计算值有关(图的宽度所占的像素/(max-min))。在柱状图中,每组数据显示的柱子数量与刻度数量一致,且柱子显示在刻度处。 |
52| display  | boolean       | false    | 否    | 是否显示轴。                                   |
53| color    | &lt;color&gt; | \#c0c0c0 | 否    | 轴颜色。                                     |
54
55  **表4** ChartSeries
56
57| 名称          | 类型             | 默认值  | 必填   | 描述                   |
58| ----------- | -------------- | ---- | ---- | -------------------- |
59| lineStyle   | ChartLineStyle | -    | 否    | 线样式设置,如线宽、是否平滑。      |
60| headPoint   | PointStyle     | -    | 否    | 线最前端位置白点的样式和大小。      |
61| topPoint    | PointStyle     | -    | 否    | 最高点的样式和大小。           |
62| bottomPoint | PointStyle     | -    | 否    | 最低点的样式和大小。           |
63| loop        | ChartLoop      | -    | 否    | 设置屏幕显示满时,是否需要重头开始绘制。 |
64
65  **表5** ChartLineStyle
66
67| 名称     | 类型             | 默认值   | 必填   | 描述    |
68| ------ | -------------- | ----- | ---- | ----- |
69| width  | &lt;length&gt; | 1px   | 否    | 线宽设置。 |
70| smooth | boolean        | false | 否    | 是否平滑。 |
71
72  **表6** PointStyle
73
74| 名称          | 类型             | 默认值      | 必填   | 描述                                       |
75| ----------- | -------------- | -------- | ---- | ---------------------------------------- |
76| shape       | string         | circle   | 否    | 高亮点的形状。可选值为:<br/>-&nbsp;circle:圆形。<br/>-&nbsp;square:方形。<br/>-&nbsp;triangle:三角形。 |
77| size        | &lt;length&gt; | 5px      | 否    | 高亮点的大小。                                  |
78| strokeWidth | &lt;length&gt; | 1px      | 否    | 边框宽度。                                    |
79| strokeColor | &lt;color&gt;  | \#ff0000 | 否    | 边框颜色。                                    |
80| fillColor   | &lt;color&gt;  | \#ff0000 | 否    | 填充颜色。                                    |
81
82  **表7** ChartLoop
83
84| 名称       | 类型             | 默认值   | 必填   | 描述                                       |
85| -------- | -------------- | ----- | ---- | ---------------------------------------- |
86| margin   | &lt;length&gt; | 1     | 否    | 擦除点的个数(最新绘制的点与最老的点之间的横向距离)。<br>margin和topPoint/bottomPoint/headPoint同时使用时,有概率出现point正好位于擦除区域的情况,导致point不可见,因此不建议同时使用。 |
87| gradient | boolean        | false | 否    | 是否需要渐变擦除。                                |
88
89  **表8** Point
90
91| 名称           | 类型            | 默认值      | 必填   | 描述                                       |
92| ------------ | ------------- | -------- | ---- | ---------------------------------------- |
93| value        | number        | 0        | 是    | 表示绘制点的Y轴坐标。                              |
94| pointStyle   | PointStyle    | -        | 否    | 表示当前数据点的绘制样式。                            |
95| description  | string        | -        | 否    | 表示当前点的注释内容。                              |
96| textLocation | string        | -        | 否    | 可选值为:<br>- "top":注释的绘制位置位于点的上方。<br>- "bottom":注释的绘制位置位于点的下方。<br>- "none":不绘制。 |
97| textColor    | &lt;color&gt; | \#000000 | 否    | 表示注释文字的颜色。                               |
98| lineDash     | string        | solid    | 否    | 表示绘制当前线段虚线的样式。<br>- "dashed,&nbsp;5,&nbsp;5":表示纯虚线,绘制5px的实线后留5px的空白。<br>- “solid”:表示绘制实线。 |
99| lineColor    | &lt;color&gt; | \#000000 | 否    | 表示绘制当前线段的颜色。此颜色不设置会默认使用整体的strokeColor。   |
100
101  **表9** DataSegment
102
103| 名称         | 类型     | 默认值  | 必填   | 描述                                       |
104| ---------- | ------ | ---- | ---- | ---------------------------------------- |
105| startColor | Color  | -    | 否    | 起始位置的颜色,设置startColor必须设置endColor。不设置startColor时,会使用系统默认预置的颜色数组,具体颜色值见下表。 |
106| endColor   | Color  | -    | 否    | 终止位置的颜色,设置endColor必须设置startColor。<br/>不设置startColor时,会使用系统默认预置的颜色数组。 |
107| value      | number | 0    | 是    | 占比数据的所占份额,最大100。                         |
108| name       | string | -    | 否    | 此类数据的名称。                                 |
109
110| 数据组  | 主题                          | 深色主题                        |
111| ---- | --------------------------- | --------------------------- |
112| 0    | 起始颜色:\#f7ce00,结束颜色:\#f99b11 | 起始颜色:\#d1a738,结束颜色:\#eb933d |
113| 1    | 起始颜色:\#f76223,结束颜色:\#f2400a | 起始颜色:\#e67d50,结束颜色:\#d9542b |
114| 2    | 起始颜色:\#f772ac,结束颜色:\#e65392 | 起始颜色:\#d5749e,结束颜色:\#d6568d |
115| 3    | 起始颜色:\#a575eb,结束颜色:\#a12df7 | 起始颜色:\#9973d1,结束颜色:\#5552d9 |
116| 4    | 起始颜色:\#7b79f7,结束颜色:\#4b48f7 | 起始颜色:\#7977d9,结束颜色:\#f99b11 |
117| 5    | 起始颜色:\#4b8af3,结束颜色:\#007dff | 起始颜色:\#4c81d9,结束颜色:\#217bd9 |
118| 6    | 起始颜色:\#73c1e6,结束颜色:\#4fb4e3 | 起始颜色:\#5ea6d1,结束颜色:\#4895c2 |
119| 7    | 起始颜色:\#a5d61d,结束颜色:\#69d14f | 起始颜色:\#91c23a,结束颜色:\#70ba5d |
120| 8    | 起始颜色:\#a2a2b0,结束颜色:\#8e8e93 | 起始颜色:\#8c8c99,结束颜色:\#6b6b76 |
121
122当类型为量规图时,还支持如下属性:
123
124| 名称      | 类型     | 默认值  | 必填   | 描述                     |
125| ------- | ------ | ---- | ---- | ---------------------- |
126| percent | number | 0    | 否    | 当前值占整体的百分比,取值范围为0-100。 |
127
128
129## 样式
130
131除支持[通用样式](js-service-widget-common-styles.md)外,还支持如下样式:
132
133| 名称           | 类型             | 默认值                        | 必填   | 描述                                       |
134| ------------ | -------------- | -------------------------- | ---- | ---------------------------------------- |
135| stroke-width | &lt;length&gt; | 32px(量规)<br/>24px(占比类圆形图表) | 否    | 量规、占比类圆形图表组件刻度条的宽度。                      |
136| start-angle  | &lt;deg&gt;    | 240(量规)<br/>0(占比类圆形图表)     | 否    | 量规、占比类圆形图表组件刻度条起始角度,以时钟0点为基线。范围为0到360。   |
137| total-angle  | &lt;deg&gt;    | 240(量规)<br/>360(占比类圆形图表)   | 否    | 量规、占比类圆形图表组件刻度条总长度,范围为-360到360,负数标识起点到终点为逆时针。 |
138| center-x     | &lt;length&gt; | -                          | 否    | 量规组件刻度条中心位置,该样式优先于通用样式的position样式,仅量规图支持。<br>该样式需要和center-y和radius一起配置才能生效。 |
139| center-y     | &lt;length&gt; | -                          | 否    | 量规组件刻度条中心位置,该样式优先于通用样式的position样式,仅量规图支持。<br>该样式需要和center-x和radius一起配置才能生效。 |
140| radius       | &lt;length&gt; | -                          | 否    | 量规组件刻度条半径,该样式优先于通用样式的width和height样式,仅量规图支持。<br>该样式需要和center-x和center-y一起配置才能生效。 |
141| colors       | Array          | -                          | 否    | 量规组件刻度条每一个区段的颜色,仅量规图支持。<br/>如:colors:&nbsp;\#ff0000,&nbsp;\#00ff00。 |
142| weights      | Array          | -                          | 否    | 量规组件刻度条每一个区段的权重,仅量规图支持。<br/>如:weights:&nbsp;2,&nbsp;2。 |
143| font-family  | Array          | -                          | 否    | 表示绘制注释的字体样式,支持[自定义字体](js-service-widget-common-customizing-font.md)。 |
144| font-size    | &lt;length&gt; | -                          | 否    | 表示绘制注释的字体的大小。                            |
145
146
147## 事件
148
149支持[通用事件](js-service-widget-common-events.md)。
150
151
152## 示例
153
1541. 线形图
155
156   ```html
157   <!-- xxx.hml -->
158   <div class="container">
159     <stack class="chart-region">
160       <image class="chart-background" src="common/background.png"></image>
161       <chart class="chart-data" type="line" ref="linechart" options="{{lineOps}}" datasets="{{lineData}}"></chart>
162     </stack>
163   </div>
164   ```
165
166
167   ```css
168   /* xxx.css */
169   .container {
170     flex-direction: column;
171     justify-content: center;
172     align-items: center;
173   }
174   .chart-region {
175     height: 400px;
176     width: 700px;
177   }
178   .chart-background {
179     object-fit: fill;
180   }
181   .chart-data {
182     width: 700px;
183     height: 600px;
184   }
185   ```
186
187
188   ```json
189   // xxx.json
190   {
191     "data": {
192       "lineData": [
193         {
194           "strokeColor": "#0081ff",
195           "fillColor": "#cce5ff",
196           "data": [
197             763,
198             550,
199             551,
200             554,
201             731,
202             654,
203             525,
204             696,
205             595,
206             628,
207             791,
208             505,
209             613,
210             575,
211             475,
212             553,
213             491,
214             680,
215             657,
216             716
217           ],
218           "gradient": true
219         }
220       ],
221       "lineOps": {
222         "xAxis": {
223           "min": 0,
224           "max": 20,
225           "display": false
226         },
227         "yAxis": {
228           "min": 0,
229           "max": 1000,
230           "display": false
231         },
232         "series": {
233           "lineStyle": {
234             "width": "5px",
235             "smooth": true
236           },
237           "headPoint": {
238             "shape": "circle",
239             "size": 20,
240             "strokeWidth": 5,
241             "fillColor": "#ffffff",
242             "strokeColor": "#007aff",
243             "display": true
244           },
245           "loop": {
246             "margin": 2,
247             "gradient": true
248           }
249         }
250       }
251     }
252   }
253   ```
254   **4*4卡片**
255
256![zh-cn_image_0000001185652902](figures/zh-cn_image_0000001185652902.png)
257
2582. 柱状图
259
260   ```html
261   <!-- xxx.hml -->
262   <div class="container">
263     <stack class="data-region">
264       <image class="data-background" src="common/background.png"></image>
265       <chart class="data-bar" type="bar" id="bar-chart" options="{{barOps}}" datasets="{{barData}}"></chart>
266     </stack>
267   </div>
268   ```
269
270
271   ```css
272   /* xxx.css */
273   .container {
274     flex-direction: column;
275     justify-content: center;
276     align-items: center;
277   }
278   .data-region {
279     height: 400px;
280     width: 700px;
281   }
282   .data-background {
283     object-fit: fill;
284   }
285   .data-bar {
286     width: 700px;
287     height: 400px;
288   }
289   ```
290
291
292   ```json
293   {
294     "data": {
295       "barData": [
296         {
297           "fillColor": "#f07826",
298           "data": [763, 550, 551, 554, 731, 654, 525, 696, 595, 628]
299         },
300         {
301           "fillColor": "#cce5ff",
302           "data": [535, 776, 615, 444, 694, 785, 677, 609, 562, 410]
303         },
304         {
305           "fillColor": "#ff88bb",
306           "data": [673, 500, 574, 483, 702, 583, 437, 506, 693, 657]
307         }
308       ],
309       "barOps": {
310         "xAxis": {
311           "min": 0,
312           "max": 20,
313           "display": false,
314           "axisTick": 10
315         },
316         "yAxis": {
317           "min": 0,
318           "max": 1000,
319           "display": false
320         }
321       }
322     }
323   }
324   ```
325   **4*4卡片**
326
327![barchart](figures/barchart.PNG)
328
3293. 量规图
330
331
332   ```html
333   <!-- xxx.hml -->
334   <div class="container">
335     <div class="gauge-region">
336       <chart class="data-gauge" type="gauge" percent = "50"></chart>
337     </div>
338   </div>
339   ```
340
341
342   ```css
343   /* xxx.css */
344   .container {
345     flex-direction: column;
346     justify-content: center;
347     align-items: center;
348   }
349   .gauge-region {
350     height: 400px;
351     width: 400px;
352   }
353   .data-gauge {
354     colors: #83f115, #fd3636, #3bf8ff;
355     weights: 4, 2, 1;
356   }
357   ```
358   **4*4卡片**
359
360![gauge](figures/gauge.PNG)
361