echarts配置(部分)

效果 1——圆角环形图

效果图-1

该配置不常用的点在于饼图中心标签内容样式的配置,主要用到series下label下formatter,rich的配置。
配置项可以放到https://echarts.apache.org/examples/zh/editor.html?c=pie-borderRadius里去预览。
效果图-1配置项:

option = {
  series: [
    {
      name: '',
      type: 'pie',
      radius: ['40%', '60%'],
      label: { // 饼图图形上的文本标签
        normal: {
          show: true,
          position: 'center', // 位置在饼图中心位
          formatter: function (params) { // 标签内容格式器
            if (params.name === '答错') {
              return `{b|${params.name}}\n{wrong|${params.percent}%}`;
            } else {
              return `{b|${params.name}}\n{right|${params.percent}%}`;
            }
          },
          rich: { // 富文本样式,可以在标签中做出非常丰富的效果
            b: {
              fontSize: 10
            },
            wrong: {
              color: '#FF9A80',
              fontSize: 12,
              fontWeight: 'bold'
            },
            right: {
              color: '#30CA8D',
              fontSize: 12,
              fontWeight: 'bold'
            }
          }
        }
      },
      emphasis: {
        label: {
          show: true,
          backgroundColor: '#fff' // 颜色加上后可以盖住直接展示的label
        }
      },
      itemStyle: { borderColor: '#fff', borderWidth: 3 },
      color: ['#30CA8D', '#FF9A80'],
      data: [
        {
          name: '答对',
          percent: '77.78',
          value: 7
        },
        {
          name: '答错',
          percent: '22.22',
          value: 2
        }
      ]
    }
  ],
  tooltip: { show: false }
};

效果2——基础面积图

效果图-2

效果图-2配置主要是:
不显示刻度axisTick: { show: false }
不显示坐标轴线axisTick: { show: false }
tooltip自定义

tooltip: {
    trigger: 'axis',
    axisPointer: {
      type: 'line', // 指示器类型 'line' 直线指示器 'shadow' 阴影指示器 'none' 无指示器 'cross' 十字准星指示器
      label: { backgroundColor: '#6a7985' }
    },
    // 图例文字颜色
    textStyle: { fontSize: 10, color: '#fff' },
    borderColor: 'transparent',
    backgroundColor: 'rgba(46, 48, 60, .74)',
    // 图例要显示的其他内容
    formatter: function (params, ticket, callback) {
      let data = params[0].data
      return `
              <div class="m-tooltip-text">
              ${data.collectedAt}<br/>
              题量: ${data.questionNum},<br>
              错题: ${data.wrongNum},<br>
              正确率: ${params[0].value}%
              </div>`
    }
  },

折线图上圆点选中后的样式在itemStyle. itemStyle .emphasis内去配置。
效果图-2配置项:

var seriesData = [
  {
    objectId: '614a8bbf6f5d4e550e3d210f',
    createdAt: '2021-09-01 09:49:51',
    collectedAt: '2021-09-01 09:50:21',
    wrongNum: 5,
    rightRatio: 80,
    knowledgeNum: 25,
    questionNum: 25,
    equipmentNum: 25,
    updatedAt: '2021-09-01 09:50:21',
    value: 40
  },
  {
    objectId: '614ac16791441128f283268d',
    createdAt: '2021-09-02 13:38:47',
    collectedAt: '2021-09-02 13:39:19',
    wrongNum: 5,
    rightRatio: 80,
    knowledgeNum: 20,
    questionNum: 25,
    equipmentNum: 25,
    updatedAt: '2021-09-02 13:39:19',
    value: 50
  },
  {
    objectId: '614ac1a091441128f28326df',
    createdAt: '2021-09-03 13:39:44',
    collectedAt: '2021-09-03 13:40:00',
    wrongNum: 3,
    rightRatio: 66.67,
    knowledgeNum: 3,
    questionNum: 9,
    equipmentNum: 4,
    updatedAt: '2021-09-03 13:40:00',
    value: 66.67
  },
  {
    objectId: '614ac1a091441128f28326df',
    createdAt: '2021-09-04 13:39:44',
    collectedAt: '2021-09-04 13:40:00',
    wrongNum: 3,
    rightRatio: 66.67,
    knowledgeNum: 3,
    questionNum: 9,
    equipmentNum: 4,
    updatedAt: '2021-09-04 13:40:00',
    value: 33
  },
  {
    objectId: '614ac1a091441128f28326df',
    createdAt: '2021-09-05 13:39:44',
    collectedAt: '2021-09-05 13:40:00',
    wrongNum: 3,
    rightRatio: 66.67,
    knowledgeNum: 3,
    questionNum: 9,
    equipmentNum: 4,
    updatedAt: '2021-09-05 13:40:00',
    value: 67
  }
];
option = {
  xAxis: {
    type: 'category',
    boundaryGap: false,
    data: ['9/1', '9/2', '9/3', '9/4', '9/5'],
    // 不显示刻度
    axisTick: { show: false },
    // 不显示坐标轴线
    axisLine: { show: false },
    // 横坐标文字颜色,大小
    axisLabel: { color: '#9B9C9E', fontSize: '12' }
  },
  yAxis: {
    show: false, // 不显示坐标轴,刻度线,文字
    type: 'value',
    splitLine: {
      show: false // 不展示横线
    },
    // 如果展示y坐标轴,且带单位‘%’,可以这么配置
    axisLabel: { color: '#9B9C9E', fontSize: '12', formatter: '{value}%' }
  },
  // 图表大小
  grid: [{ top: 10, bottom: 30, left: '3%', right: '4%' }],
  tooltip: {
    trigger: 'axis',
    axisPointer: {
      type: 'line', // 指示器类型 'line' 直线指示器 'shadow' 阴影指示器 'none' 无指示器 'cross' 十字准星指示器
      label: { backgroundColor: '#6a7985' }
    },
    // 图例文字颜色
    textStyle: { fontSize: 10, color: '#fff' },
    borderColor: 'transparent',
    backgroundColor: 'rgba(46, 48, 60, .74)',
    // 图例要显示的其他内容
    formatter: function (params, ticket, callback) {
      let data = params[0].data;
      return `
              <div class="m-tooltip-text">
              ${data.collectedAt}<br/>
              题量: ${data.questionNum},<br>
              错题: ${data.wrongNum},<br>
              正确率: ${params[0].value}%
              </div>`;
    }
  },
  series: [
    {
      name: '正确率',
      data: seriesData,
      type: 'line',
      smooth: true,
      itemStyle: {
        normal: { color: '#2CA2FF', lineStyle: { color: '#2CA2FF' } },
        // 折线图上圆点选中后的样式
        emphasis: {
          color: '#2CA2FF',
          borderColor: 'rgba(44, 162, 255, .2)',
          borderWidth: 10
        }
      },
      areaStyle: {
        opacity: 0.8,
        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
          {
            offset: 0,
            color: '#C5E5FF'
          },
          {
            offset: 1,
            color: '#FAFBFC'
          }
        ])
      }
    }
  ]
};

效果3——折线图

效果图-3

效果图-3配置主要是:不显示x轴刻度axisTick: { show: false }, 显示y轴的竖线并定义颜色axisLine: { show: true, lineStyle: { color: '#ebebeb' } }
折线点设置为实心点 symbol: 'circle',
折线点设置大小 symbolSize: 6
效果图-3配置项:

var option = {
        tooltip: {
          trigger: 'axis'
        },
        legend: {
          show: false // 不展示legend
        },
        grid: {
          left: '1%',
          right: '3%',
          bottom: '8%',
          containLabel: true
        },
        xAxis: {
          type: 'category',
          boundaryGap: false,
          axisLabel: {
            textStyle: {
              fontSize: 11,
              color: '#737478' // x轴坐标值颜色
            }
          },
          axisLine: {
            lineStyle: {
              color: '#ebebeb' // x轴颜色
            }
          },
          axisTick: {
            show: false // 坐标轴刻度不显示
          },
          data: ['4月8日', '4月8日', '4月8日', '4月8日', '4月8日', '4月8日', '4月8日']
        },
        yAxis: {
          type: 'value',
          axisLine: { // 显示y轴的竖线
            show: true,
            lineStyle: {
              color: '#ebebeb' // x轴颜色
            }
          },
          axisLabel: {
            formatter: '{value}%', // 轴展示如: 20%
            textStyle: {
              fontSize: 11,
              color: '#737478' // y轴坐标值颜色
            }
          }
        },
        series: [
          {
            name: '年级得分率',
            type: 'line',
            color: '#F0BB5A',
            symbol: 'circle', // 设置为实心点
            symbolSize: 6, // 折线点的大小
            data: [80, 72, 100, 84, 90, 50, 60]
          },
          {
            name: '班级得分率',
            type: 'line',
            color: '#2CA2FF',
            symbol: 'circle', // 设置为实心点
            symbolSize: 6, // 折线点的大小
            data: [88, 89, 91, 77, 50, 79, 50]
          }
        ]
      }

显示折线上的值
image.png
var option = {
        ...,
        series: [{
            label: { // 展示折线上方的值
              show: true,
              position: 'top'
            },
            type: 'line',
            color: '#2CA2FF',
            symbol: 'circle', // 设置为实心点
            symbolSize: 6, // 折线点的大小
            data: [20, 113, 40, 38, 38, 86, 104, 113]
        }]
      }

效果4——仪表盘

image.png

该图配置主要为:

  1. 刻度线颜色渐变,而且颜色随着比例变化
  2. axisTick的lineStyle有渐变色,所以黑色和灰色的图表样式也用渐变的配置,不然小程序真机调试的时候颜色都会变成相同的渐变颜色
  3. 仪表盘详情,显示数据的样式,detail.rich配合detail.formatter使用
var rateValue = 0.6 // 值,0~1之间
var startAngle = 215 // 开始角度
var endAngle = -35 // 结束角度
var splitCount = 50 // 刻度数量
 // 当前指针(值)角度
var pointerAngle = (startAngle - endAngle) * (1 - rateValue) + endAngle
if (rateValue === 1) {
  pointerAngle = -35
}
// 已完成
let series = [{
  type: 'gauge',
  startAngle: startAngle,
  endAngle: pointerAngle,
  splitNumber: 1,
  axisLine: {
    lineStyle: {
      width: 20,
      opacity: 0
    }
  },
  title: {show: true, offsetCenter: [0, 80], fontSize: 14},
  pointer: {show: false},
  axisTick: {
    distance: -5,
    length: 15,
    splitNumber: Math.ceil(rateValue * splitCount),
    lineStyle: {
      color: {
        type: 'linear',
        x: 0,
        y: 0,
        x2: 0,
        y2: 1,
        colorStops: [{
          offset: 0, color: '#FEB783' // 0% 处的颜色
        }, {
          offset: 1, color: '#FA6258' // 100% 处的颜色
        }],
        global: false // 缺省为 false
      },
      width: 4
    }
  },
  // 刻度
  splitLine: {
    show: false
  },
  axisLabel: {show: false},
  detail: {
    valueAnimation: true,
    offsetCenter: [0, '-15%'],
    color: 'black',
    formatter: function (value) {
      return '{value|' + value.toFixed(0) + '}{unit|%}';
    },
    rich: {
      value: {
        fontSize: 47,
        fontWeight: '500',
        color: '#FA6258'
      },
      unit: {
        fontSize: 17,
        color: '#FA6258',
        padding: [0, 0, -20, 10]
      }
    }
  },
  data: [
    {
      value: rateValue * 100,
      name: '你已超过了' + rateValue * 100 + '%的同行'
    }
  ]
}]
series.push({
  type: 'gauge',
  startAngle: 225,
  endAngle: -45,
  splitNumber: 1,
  axisLine: {
    lineStyle: {
      opacity: 0,
      width: 30
    }
  },
  title: {show: false},
  pointer: {show: false},
  axisTick: {
    distance: -30,
    length: 1,
    splitNumber: 55,
    lineStyle: {
      color: {
        type: 'linear',
        x: 0,
        y: 0,
        x2: 0,
        y2: 1,
        colorStops: [{
          offset: 0, color: '#E3E5E7' // 0% 处的颜色
        }, {
          offset: 1, color: '#E3E5E7' // 100% 处的颜色
        }],
        global: false // 缺省为 false
      },
      width: 4
    }
    // lineStyle: {
    //   color: '#E3E5E7',
    //   width: 3,
    //   cap: 'round'
    // }
  },
  splitLine: {
    show: false
  },
  axisLabel: {show: false},
  detail: {show: false},
  data: [0]
})

if (rateValue !== 1) {
  // 未完成
  series.push({
    type: 'gauge',
    startAngle: pointerAngle,
    endAngle: endAngle,
    splitNumber: 1,
    axisLine: {
      lineStyle: {
        opacity: 0,
        width: 20
      }
    },
    title: {show: false},
    pointer: {show: false},
    axisTick: {
      distance: -5,
      length: 15,
      splitNumber: Math.floor((1 - rateValue) * splitCount),
      lineStyle: {
        color: {
          type: 'linear',
          x: 0,
          y: 0,
          x2: 0,
          y2: 1,
          colorStops: [{
            offset: 0, color: '#001242' // 0% 处的颜色
          }, {
            offset: 1, color: '#001242' // 100% 处的颜色
          }],
          global: false // 缺省为 false
        },
        width: 4
      }
    },
    splitLine: {
      show: false
    },
    axisLabel: {show: false},
    detail: {show: false},
    data: [30]
  })
}

option = {
  series: series
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容