最近有个需求,需要绘制一个饼图,为此我根据这次需求来整理了一下关于 echarts 饼图绘制的一些知识点,在这次需求中我需要用到的属性我会详细讲解,其他的属性我会粗略地说一下(并加入其他博主的文章的跳转),综合案例在后续博客中更新。
注意: 有些属性只有新版示例中才有,老版本的无法生效,如:borderRadius 。
直接在官网找一个最基础的饼图案例:
option = {
title: {
text: 'Referer of a Website',
subtext: 'Fake Data',
left: 'center'
},
tooltip: {
trigger: 'item'
},
legend: {
orient: 'vertical',
left: 'left'
},
series: [
{
name: 'Access From',
type: 'pie',
radius: '50%',
data: [
{ value: 1048, name: 'Search Engine' },
{ value: 735, name: 'Direct' },
{ value: 580, name: 'Email' },
{ value: 484, name: 'Union Ads' },
{ value: 300, name: 'Video Ads' }
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
}
}
]
};
然后你就得到了一个这样的最基础的饼图:
接下来我们就可以来分析一下这个饼图的构造了,这样我们后续才好优化,其主要结构如下图:
那么就根据上图来说明一下饼图的属性值了,从最简单的 title 开始:
title
show 是否显示标题,默认为truetext 主标题subtext 副标题x 水平位置,可选值 left、right、centery 垂直位置,可选值 top、center、bottom
注意: 还可以用
left、right、top、bottom四个属性来精确设置 title 的位置,效果可参考position中的left、right、top、bottom。
backgroundColor 标题背景色borderWidth 标题边框线宽borderColor 标题边框颜色paddingitemGap 主副标题纵向间隔,只能填数字textStyle 主标题文本样式
fontFamilyfontSizefontStylefontWeightcolorlineHeighttextBorderColor 字体描边颜色textBorderWidth 字体描边宽度,只填数字textShadowColor 阴影颜色textShadowBlur 阴影长度textShadowOffsetX 阴影水平偏移textShadowOffsetY 阴影垂直偏移subtextStyle 副标题文本样式案例
title: {
text: '一个饼图',
subtext: '不断优化中',
x: 'center',
y: 'top',
itemGap: 13,
textStyle: {
fontFamily: "华文隶书",
fontSize: 28,
fontStyle: "italic",
textBorderColor: "#01deff",
textBorderWidth: 2,
textShadowColor: "#d7f8fc",
textShadowBlur: 3,
textShadowOffsetX: 5,
textShadowOffsetY: 5
},
subtextStyle: {
fontSize: 18,
fontFamily: "华文隶书",
fontStyle: "italic",
textBorderColor: "#01deff",
textBorderWidth: 2,
}
},
这个就是左边那几个标识了,其由两部分组成,如下:
legend
orient 图例的排列,vertical 垂直、horizontal 水平x 水平位置,水平位置,可选值 left、right、centery 垂直位置,可选值 top、center、bottom
注意: 还可以用
left、right、top、bottom四个属性来精确设置 title 的位置,效果可参考position中的left、right、top、bottom。
backgroundColor 背景颜色borderColor 边框颜色borderWidth 边框宽度paddingitemGap 图例之间的间距,只填数字icon 图标类型:
circle 圆形rect 矩形roundRect 圆角矩形(默认)triangle 三角形diamond 菱形pin 地图标记图标arrow 箭头none 无图标itemHeight 控制 icon 高度itemWidth 控制 icon 宽度align 调整 icon 相对于文本的位置(left——icon在文本左边、right、auto)textStyle 设置文本样式,参考 title 章节的文本样式selected 指定不显示在饼图中的数据案例
legend: {
orient: 'vertical',
// left: 33,
x: 'right',
y: 'center',
itemGap: 20,
icon: 'circle',
align: 'left',
selected: {
'Direct': false,
'Email': false
}
},
formatter 可以自定义每个图例的文本内容,可用在 tooltip、legend、label 中,不过一般是用在 legend 中。
现在我有一个需求,我要让 legend 的文本的后面都加上一个 ○,如下:
// name 对应的是 series.data 中的 name 属性
formatter: function (name) {
return name + ' ○';
}
更详细的使用请见后续的综合案例。
label
show 是否显示,默认为 truebackgroundColor 背景颜色borderColor 边框颜色borderWidth 边框宽度borderRadius 边框圆角padding 内边距因为这次需求中不需要管 label 长啥样,我直接 show: false 了,也就没去研究了,其余的属性可以见以下两篇博客:
https://www.hangge.com/blog/cache/detail_3130.html
https://blog.csdn.net/qq_38718629/article/details/126892957
tooltip
show 是否显示,默认 truetrigger 触发类型
item 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用axis 坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用none 不触发axisPointer 轴指针属性,trigger: ‘axis’ 时使用,这里不做赘述showContent 是否显示提示框浮层,默认 truealwaysShowContent 是否永远显示提示框内容,默认(false)情况下在移出可触发提示框区域后一定时间后隐藏triggerOn 提示框触发的条件
mousemove 鼠标悬浮时触发(默认)click 鼠标点击时触发mousemove|click 移动或点击时触发none 无法触发confine 是否将 tooltip 框限制在图表的区域内,默认 falsebackgroundColor 背景色paddingtextStyle 设置文本样式,参考 title 章节的文本样式borderWidth 边框宽度borderColor 边框颜色
使用默认的边框样式,它会根据饼图颜色来绘制边框
formatter 见 legend 中的 formatter这个是可操作属性最多的组成部分了,其属性值也是最多的。
series
name tooltip 的标题文字type 图标类型,如:pie、category、lineroseType 将普通饼图转换成南丁格尔图
radius 扇区圆心角展现数据的百分比,半径展现数据的大小area 扇区圆心角的半径展现数据的大小(从大到小顺时针渲染)none 普通饼图(默认)radius 饼图大小,可用 px、%
注意:
- 如果只有一个属性值,则是实心饼图,属性值为饼图大小
- 如果有两个属性值,如:
['60%', '70%'],第一个值表示内圈大小,第二个表示外圈大小
center 饼图圆心所在位置,可用 px、%,如:['40%', '50%']avoidLabelOverlap 是否避免标签重叠,默认为 falsecolor 饼图扇叶颜色,与 data 中的数据匹配data 饼图渲染数据emphasis 当鼠标悬浮时,饼图扇叶的变化
focus 在高亮图形时,是否淡出其它数据的图形已达到聚焦的效果
none 不淡出其它图形(默认)self 只聚焦(不淡出)当前高亮的数据的图形series seriesblurScope 在开启 focus 的时候,可以通过 blurScope 配置淡出的范围
coordinateSystem 淡出范围为坐标系(默认)series 淡出范围为系列global 淡出范围为全局itemStyle 饼图扇叶样式
shadowColor 阴影颜色shadowBlur 阴影长度shadowOffsetX 阴影水平偏移shadowOffsetY 阴影垂直偏移borderRadius 边框圆角borderColor 边框颜色borderWidth 边框宽度注意: 可以在 emphasis 设置 itemStyle
案例
series: [
{
name: 'Access From',
type: 'pie',
radius: ['60%', '70%'],
center: ['50%', '50%'],
roseType: 'area',
data: [
{ value: 1048, name: 'Search Engine' },
{ value: 735, name: 'Direct' },
{ value: 580, name: 'Email' },
{ value: 484, name: 'Union Ads' },
{ value: 300, name: 'Video Ads' }
],
label: {
show: false
},
itemStyle: {
borderRadius: '10%',
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
},
}
]
看这篇文章:https://blog.csdn.net/qq_39442804/article/details/78202256 写得巨好