前言:最近项目要大量使用echarts图表,为保证项目进度能够顺利进行,研究一下吧。

    Echarts图表主要通过传入的option对象来映射图表。
    官方示例如下:

    1. option = {
    2. // 图例
    3. legend: {
    4. // data数组里面的字段要和series数组里面的name对应
    5. // 源码应该是拿下标的字段和series的name属性值做对比
    6. data: ['秀儿','大狗']
    7. },
    8. // X轴,
    9. xAxis: {
    10. /**
    11. type的注意事项
    12. 1. category是类目轴.竖着放X轴设为类目轴,横着放则y轴为类目轴,其他值value用于连续数据,time是时间
    13. 2. 如果xAxis.data有数据,type就算不写也会值默认改成'category'
    14. 3. 按照推理,如果yAxis.data有数据不就是两个类目轴了吗,那怎么渲染
    15. 经过试验,如果x和y轴对象都有data属性是错误渲染。。
    16. 所以:x和y轴只有一个类目轴,如果x轴是类目轴,yAxis.type值就应该是value。反之亦然
    17. **/
    18. type: 'category',
    19. data: ['语文', '数学', '英语', '体育', '化学', '历史']
    20. },
    21. // y轴
    22. yAxis: {
    23. // category是类目轴,value用于连续数据,time是时间
    24. type: 'category',
    25. data: ['语文', '数学', '英语', '体育', '化学', '历史']
    26. },
    27. // 系列列表,
    28. /**
    29. series的注意事项
    30. 1.type:通过type来决定图表类型line bar pie
    31. 2.name:每个对象的name尽量写上,和类目轴的顺序保持一致,另外通用配置legend也会用到
    32. 3.data:其实就是二维坐标系中非类目轴的值
    33. 4.series数组中每一项都对应一个系列的数据
    34. series.xxx.markPoint 图表标注
    35. series.xxx.markLine 图表标线
    36. serises.xxx.label 每个柱 数值显示
    37. serises.xxx.barWidth 柱体的宽度
    38. serises.xxx.emphasis 高亮的图形样式和标签样式/或者说鼠标悬停时
    39. serises.xxx.itemStyle 每根柱的样式
    40. serises.xxx.grid 控制边距
    41. **/
    42. series: [
    43. {
    44. // 数据
    45. name: '秀儿',
    46. type: 'bar',
    47. data: [5, 20, 36, 10, 10, 20],
    48. //
    49. // 每个柱数值显示
    50. label: {
    51. // 显示开关
    52. show :true,
    53. // 旋转角度 从 -90 度到 90 度。正值是逆时针。直接写数字
    54. rotate: 20,
    55. /**
    56. 位置(值比较多用到再说吧)三种
    57. 1.语义声明=> top left等等
    58. 2.像素值=> position: [10, 10],
    59. 3.百分比=> position: ['50%', '50%']
    60. **/
    61. position: 'top'
    62. },
    63. // 每根柱的样式
    64. itemStyle:{
    65. color: (params)=>{
    66. let colorList = ['red'];
    67. return colorList[params.dataIndex] || 'red';
    68. }
    69. },
    70. // 控制边距 
    71. grid: {
    72. left: '0%',
    73. right:'10%',
    74. containLabel: true,
    75. },
    76. // 最大最小值的写法
    77. markPoint: {
    78. data:[
    79. {
    80. type: 'max', name: '最大值'
    81. },
    82. {
    83. type: 'min', name: '最小值'
    84. },
    85. ]
    86. },
    87. // 平均值的写法
    88. markLine: {
    89. data: [
    90. {
    91. type: 'average', name: '平均值'
    92. }
    93. ]
    94. }
    95. },
    96. {
    97. name: '大狗',
    98. type: 'bar',
    99. data: [5, 20, 36, 10, 10, 20]
    100. }
    101. ]
    102. };