核心点

    1. 分段显示不同的颜色,明显的强调区别的作用
    2. 拆分为多个series,2个数据源实现在线,离线状态
      1. 第一个实现在线状态
      2. 第二个实现离线状态,不同的折线显示不同的颜色即可
      3. 若是不想让某个点展示,则这个点对应的data数值 null, 或 ‘-‘ 来表示
    3. yAxis的 type,设置为 category,设置数据源

    image.png

    1. function onlineToOffline({ dataSource, xAxisData, color = ['#41c669', '#ff6160'] }) {
    2. const _options = {
    3. color,
    4. tooltip: {
    5. // trigger: 'item',
    6. // formatter: '{a} <br/>{b} : {c}',
    7. },
    8. xAxis: {
    9. type: 'category',
    10. boundaryGap: true,
    11. data: xAxisData,
    12. axisTick: {
    13. lineStyle: { color: '#c1c5ca41' },
    14. alignWithLabel: true,
    15. },
    16. axisLine: { lineStyle: { color: '#c1c5ca41' }},
    17. axisLabel: { color: '#9da5b2', fontSize: '11' },
    18. },
    19. grid: {
    20. top: 24,
    21. right: 8,
    22. bottom: 0,
    23. left: 0,
    24. containLabel: true, // 防止标签溢出
    25. },
    26. yAxis: {
    27. type: 'category',
    28. data: ['离线', '在线'],
    29. axisLine: { lineStyle: { color: '#c1c5ca41' }},
    30. // 改为虚线网格
    31. splitLine: { lineStyle: { color: '#c1c5ca41', type: 'dashed' } },
    32. axisLabel: { color: '#9da5b2', fontSize: 11 },
    33. },
    34. series: [
    35. {
    36. name: '在线',
    37. type: 'line',
    38. step: 'online',
    39. data: [0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0],
    40. itemStyle: {
    41. color: color[0],
    42. },
    43. },
    44. {
    45. name: '离线',
    46. type: 'line',
    47. step: 'offline',
    48. data: [0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0].map(it => {
    49. return (it === 1) ? null : it
    50. }),
    51. itemStyle: {
    52. color: color[1],
    53. },
    54. },
    55. ],
    56. };
    57. return _options;
    58. }
    59. export default onlineToOffline;