Python如何用Matplotlib画出优雅的扇形图?

我们用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}                                                            #设置扇形边界线宽

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