设计原则:配置优先,组件化

  1. myChart.setOption(option,true);

echarts 图表的展示效果都是由 options 决定。options 是一个对象,可以配置图表的各种组件,组件组合后在画布(grid)上展示出来,就生成了图表。

常用的组件配置

  • 标题 (title)
  • 图例 (legend)
  • 画布 (grid)
  • x坐标轴 (xAxis)
  • y坐标轴 (yAxis)
  • 数据 (series)
  • 提示框 (tooltip)
    • 提示框组件可以设置在多种地方:
    • 全局,即 tooltip
    • 坐标系中,即 grid.tooltip、polar.tooltip、single.tooltip
    • 系列中,即 series.tooltip
    • 系列的每个数据项中,即 series.data.tooltip
  • 缩放过滤组件(dataZoom)
  • 坐标轴指示器(axisPointer)
    • 一般来说,axisPointer 的具体配置项会配置在各个轴中(如 xAxis.axisPointer)或者 tooltip 中(如 tooltip.axisPointer)。但是这几个选项只能配置在全局的 axisPointer 中:axisPointer.triggerOn、axisPointer.link。
  • 工具栏(toolbox)
    • 内置有导出图片,数据视图,动态类型切换,数据区域缩放,重置五个工具

图表组成部分

image.png
image.png

示例配置

  1. var legendText = '销量(图例)';
  2. var legendText2 = '图例2';
  3. var legendText3 = '图例Pie图';
  4. var option = {
  5. /**
  6. * 标题,包含主标题和副标题
  7. * 可以配置任意个标题
  8. */
  9. title: [
  10. {
  11. textAlign: 'center',
  12. text: '标题1',
  13. left: 100,
  14. top: 20,
  15. link: 'https://www.baidu.com',
  16. textStyle: {
  17. fontSize: 12,
  18. color: '#666666',
  19. },
  20. subtext: '副标题1'
  21. },
  22. {
  23. textAlign: 'center',
  24. text: '标题2',
  25. left: 400,
  26. top: 20
  27. }
  28. ],
  29. /**
  30. * 支持任意个图例
  31. */
  32. legend: [
  33. {
  34. left: 20,
  35. bottom: 10,
  36. data: [{
  37. name: legendText, // legend.data.name 必须与 series.name 一样
  38. // 强制设置图形为圆。
  39. icon: 'circle',
  40. // 设置文本为红色
  41. textStyle: {
  42. color: 'red'
  43. }
  44. }]
  45. },
  46. {
  47. left: 120,
  48. bottom: 10,
  49. data: [{
  50. name: legendText2
  51. }]
  52. },
  53. {
  54. left: 420,
  55. bottom: 10,
  56. data: [{
  57. name: legendText3
  58. }]
  59. }
  60. ],
  61. /**
  62. * 可以认为是图表画布
  63. */
  64. grid: [
  65. {
  66. x: 80,
  67. y: 80,
  68. width: 200,
  69. height: 200,
  70. show: true,
  71. backgroundColor: 'rgb(128, 128, 128)',
  72. },
  73. {
  74. x: 350,
  75. y: 80,
  76. width: 300,
  77. height: 250,
  78. show: false
  79. }
  80. ],
  81. /**
  82. * x 轴配置。可以任意个
  83. */
  84. xAxis: [
  85. {
  86. type: 'category',
  87. gridIndex: 0, // 这个值很重要,用于指定图表组件属于哪个画布
  88. data: [
  89. 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'
  90. ],
  91. tooltip : {
  92. trigger: 'axis',
  93. axisPointer : {
  94. type : 'cross'
  95. }
  96. }
  97. },
  98. {
  99. show: false, // 隐藏此 x
  100. type: 'category',
  101. gridIndex: 1,
  102. data: [
  103. 2011, 2012, 2013, 2014, 2015
  104. ],
  105. axisPointer: {
  106. show: true,
  107. type: 'line',
  108. label: {
  109. show: true,
  110. formatter: function (params) {
  111. return echarts.format.formatTime('yyyy-MM-dd', params.value);
  112. },
  113. backgroundColor: '#004E52'
  114. }
  115. },
  116. }
  117. ],
  118. /**
  119. * y 轴配置。可以任意个
  120. */
  121. yAxis: [
  122. {
  123. type: 'value',
  124. gridIndex: 0
  125. },
  126. {
  127. type: 'value',
  128. gridIndex: 1
  129. },
  130. {
  131. type: 'value',
  132. name: '降水量',
  133. min: 0,
  134. max: 250,
  135. position: 'right',
  136. gridIndex: 1,
  137. offset: 10,
  138. axisLine: {
  139. lineStyle: {
  140. color: 'purple'
  141. }
  142. },
  143. axisLabel: {
  144. formatter: '{value} ml'
  145. }
  146. }
  147. ],
  148. /**
  149. * 数据配置。可以任意个
  150. */
  151. series: [
  152. {
  153. name: legendText,
  154. xAxisIndex: 0,
  155. yAxisIndex: 0,
  156. data: [
  157. 120, 200, 150, 80, 70, 110, 130
  158. ],
  159. type: 'bar',
  160. },
  161. {
  162. name: legendText2,
  163. xAxisIndex: 0,
  164. yAxisIndex: 0,
  165. data: [
  166. 120, 200, 150, 80, 70
  167. ],
  168. type: 'line'
  169. },
  170. {
  171. name: legendText3,
  172. xAxisIndex: 1,
  173. yAxisIndex: 1,
  174. data: [
  175. {
  176. value: 120,
  177. tooltip: {
  178. trigger: 'item',
  179. showContent: true,
  180. formatter: function (params) {
  181. return `${params.name}:${params.value}`;
  182. },
  183. position: ['center', 'center']
  184. },
  185. },
  186. {
  187. value: 200
  188. },
  189. {
  190. value: 150
  191. },
  192. {
  193. value: 80
  194. },
  195. {
  196. value: 70
  197. }
  198. ],
  199. type: 'bar'
  200. }
  201. ],
  202. /**
  203. * 工具栏:内置有导出图片,数据视图,动态类型切换,数据区域缩放,重置五个工具
  204. */
  205. toolbox: {
  206. show: true,
  207. feature: {
  208. dataZoom: {
  209. yAxisIndex: 'none'
  210. },
  211. dataView: {readOnly: false},
  212. magicType: {type: ['line', 'bar']},
  213. restore: {},
  214. saveAsImage: {}
  215. }
  216. },
  217. /**
  218. * option 根上要声明 tooltip 才能启用 series.tooltip/series.data[i].tooltip
  219. * 为每个gird配置特定tooltip方法:
  220. * 1. 先在 option 根配置: tooltip: {showContent: false}
  221. * 2. 在特定series.data配置 tooltip: { trigger: 'item', showContent: true, formatter: function() {} }
  222. */
  223. tooltip: {showContent: false}
  224. };