一、选取合适的数据
环形图适合用来展示不同数据之间的占比关系,因此选取的数据应当符合这个特点。比如,我们可以用环形图展示某个公司不同部门的利润占比,或者某款产品不同销售地区的市场份额。
举个例子,我们现在有一个小型的外卖平台,想要用环形图展示不同餐饮品类的销售量占比。我们先根据销售数据计算出每个品类的销售量,并把这些数据汇总成一个对象数组:
var data = [ {value: 300, name: '中式'}, {value: 200, name: '西式'}, {value: 150, name: '日式'}, {value: 100, name: '韩式'}, {value: 50, name: '其他'} ];
这个数组中,每个对象都包含两个属性:value表示销售量,name表示品类名称。
二、设置图表属性
在使用Echarts绘制环形图之前,我们需要设置一些基础属性。例如,我们可以设置图表的标题和数据源:
var option = { title: { text: '餐饮品类销售量占比', subtext: '2021年1月-6月' }, series: [{ name: '销售量', type: 'pie', data: data }] };
上述代码中,我们通过title属性设置了图表的标题和副标题,通过series属性设置了数据和图表类型。这里我们选择使用pie类型绘制环形图。
三、设置环形图样式
除了基础属性之外,我们还可以通过style属性设置图表的样式。在环形图中,我们可以调整环的内外半径、中心位置、颜色等属性来实现不同的效果。
例如,我们可以将内半径设为50%,外半径设为70%,让环形图看起来更加立体:
series: [{ name: '销售量', type: 'pie', radius: ['50%', '70%'], center: ['50%', '50%'], data: data }]
我们还可以调整扇形之间的间距和弧度,让图表更加美观。例如,我们可以将间距设为5%,将第一块扇形的起始角度设为90度:
series: [{ name: '销售量', type: 'pie', radius: ['50%', '70%'], center: ['50%', '50%'], roseType: 'radius', itemStyle: { borderRadius: 10, borderColor: '#fff', borderWidth: 2 }, label: { color: '#000' }, data: data.sort(function(a, b) { return a.value - b.value; }), labelLine: { smooth: 0.2, length: 10, length2: 20 }, itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } }]
四、完整示例代码
以下是一个完整的使用Echarts创建令人惊叹的环形图的示例代码:
餐饮品类销售量占比 <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.1.2/echarts.min.js"></script> <script> var data = [ {value: 300, name: '中式'}, {value: 200, name: '西式'}, {value: 150, name: '日式'}, {value: 100, name: '韩式'}, {value: 50, name: '其他'} ]; var option = { title: { text: '餐饮品类销售量占比', subtext: '2021年1月-6月' }, series: [{ name: '销售量', type: 'pie', radius: ['50%', '70%'], center: ['50%', '50%'], itemStyle: { borderRadius: 10, borderColor: '#fff', borderWidth: 2 }, label: { color: '#000' }, data: data.sort(function(a, b) { return a.value - b.value; }), labelLine: { smooth: 0.2, length: 10, length2: 20 }, itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } }] }; var chart = echarts.init(document.getElementById('chart')); chart.setOption(option); </script>