我们用Matplotlib直接画出的扇形图往往如下:
它看起来有以下一些缺点:
1.颜色不够柔和
2.有重复的颜色
3.各颜色部分未标出指示对象
4.圆形变成了椭圆,不美观
画出上图的代码很简单,如下:
fig,axes=plt.subplots(nrows=2,ncols=2,figsize=(9,10)) #在画布上画2*2个图,我们的扇形图将会是第一个图,为了简洁,我们不显示另外三个分图。
ax1,ax2,ax3,ax4=axes.flatten() #flatten()将ax由2*2的Axes组展平成1*4的Axes组
total_sales=country_metrics["total_sales"].copy() #复制要画的数据
total_sales.plot.pie(ax=ax1) #在第一个分图中画出扇形图
然而,经过适当的调整,你可以画出如下更加美观的扇形图:
它的美观显而易见:
1.颜色更加柔和美观
2.作图角度为顺时针,且从垂直-90度开始,更加整洁易读
3.每扇都有清晰的内容指示,且标题和每扇文字大小,粗细有别
4.没有重复的颜色
画出上图的代码如下:
colors = [plt.cm.Accent(i) for i in np.linspace(0, 1, country_metrics.shape[0])] #制作颜色,从0到1的区域内均匀选取Accent颜色映射条里的颜色(Accent的颜色见 https://matplotlib.org/gallery/color/colormap_reference.html )。
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(9, 10)) #在画布上画2*2个图,我们的扇形图将会是第一个图,为了简洁,我们不显示另外三个分图。
ax1, ax2, ax3, ax4 = axes.flatten() #flatten()将ax由2*2的Axes组展平成1*4的Axes组
fig.subplots_adjust(hspace=.5, wspace=.3) #调整分图距离,我们的图片里只是截取了第一个分徒(扇形图)
sales_breakdown = country_metrics["total_sales"].copy().rename("") #复制要画的数据
sales_breakdown.plot.pie( #画扇形图
ax=ax1, #画第一个分图
startangle=-90, #开始画图角度为-90度
counterclock=False, #顺时针作图
title='Sales Breakdown by Country,\nNumber of Customers', #标题
colormap=plt.cm.Accent, #颜色映射
fontsize=8, #字体大小
wedgeprops={'linewidth':0} #设置扇形边界线宽