Python绘制统计图表

python对数据统计特别友好,原生库即有相关支持:matplotlib

1.环境配置

sudo pip install matplotlib

安装完成后需要调整下配置文件(mac可跳过),原因:python解释器各个平台版本都有,理论上会cover大多数底层接口,所以看起来“跨平台”。但是部分与绘图/进程/系统内核等相关功能,不同系统间差异较大,python尚未全cover。比如我们matplotlib在不同系统上兼容性就有点问题,所以需要通过配置文件来获得“跨平台”的效果。针对matplotlib有合适的egg包可以解决,修改配置文件让egg包生效即可。

where is matlotlibrc

即可获得配置文件路径(windows请全盘搜索),打开文件把backend改为以下Agg:

# The default backend; one of GTK GTKAgg GTKCairo GTK3Agg GTK3Cairo

# CocoaAgg MacOSX Qt4Agg Qt5Agg TkAgg WX WXAgg Agg Cairo GDK PS PDF SVG

# Template.

# You can also deploy your own backend outside of matplotlib by

# referring to the module name (which must be in the PYTHONPATH) as

# ‘module://my_backend’.

backend : Agg

2.hello world

# coding:utf-8

import matplotlib

matplotlib.use('Agg')

import matplotlib.pyplot as plt

import numpy as np

import os

plt.rcParams['font.sans-serif']=['SimHei']

plt.rcParams['axes.unicode_minus']=False


plt.plot( [12,34,56,78,90])#输入一个成员都是数字的数组

plt.savefig('tmp.png')#保存为图片

plt.close('all')#清空画布。不要省略这一句,不然多个图会有bug。

一共3句,一句都不能少,这就输出了个图片“tmp.png”


hello world

3.定制坐标轴

plt.plot( [12,34,56,78,90])

plt.xticks([0,1,2,3,4], ['1月'.decode('utf-8'),'2月'.decode('utf-8'),'3月'.decode('utf-8'),'4月'.decode('utf-8'),'5月'.decode('utf-8')], rotation=0)

plt.savefig('tmp.png')

plt.close('all')

以上只多了一行,输入2个数组,定制了x轴。第一个数组标记了文本出现的位置,第二个数组是unicode字符串。rotation可以让文字歪过来,在文本过长互相压盖时使用。


定制坐标轴

4.定制图例

plt.plot( [12,34,56,78,90],label='上月'.decode('utf-8'))

plt.legend(bbox_to_anchor=[0.3, 1])

plt.savefig('tmp.png')

plt.close('all')

画图时加个参数“label”,定义legend之后就会自动出图例。同样只支持unicode字符串。


定制图例

5.定制标题

plt.plot( [12,34,56,78,90])

plt.title('反馈率'.decode('utf-8'))

plt.savefig('tmp.png')

plt.close('all')

只需要加一句,传入unicode字符串。python默认是unicode,但是写了coding:utf-8之后会把默认编码修改成utf-8,所以这里需要decode回来。


定制标题

6.定制图片尺寸

fig=plt.gcf()

fig.set_size_inches(10, 5)


plt.plot( [12,34,56,78,90])

plt.savefig('tmp.png')

plt.close('all')

需要在绘制之前,设定图片尺寸,只需要2句。长宽单位是英寸,建议估摸着多试几次找满意的尺寸。


定制图片尺寸

7.图表类型

常用的就 折线图,饼图,条形图;每种图有不同的定制方式。

plt.plot([12,34,56,78,90],color='blue', label='反馈率'.decode('utf-8'),linewidth=5,linestyle='-.')

折线图中,label是图例,color是线颜色,linewidth是线宽,linestyle是线类型

plt.pie([15,23,14,5],explode=[0,0.1,0,0],labels=['a','b','c','d'],colors=['r','b','g','w'],autopct='%1.1f%%',shadow=True,startangle=50)

饼图中,explode是突出显示,label是图例,color是颜色,autopct是占比格式,shadow是阴影,startangle是开始绘制的位置

plt.bar(left=[0,1,2], height=[10,15,20],width=0.3,alpha=0.3, color='b',label='month',edgecolor='#000000',linewidth=2)

条形图比其他图多一个必选输入,需要输入条形长度和条形位置。

8.多子图

也就是在一张图片上,画多个图表。常见的就是上下组合,左右组合,4拼。不建议画更复杂的图。

左右:

plt.figure(12)#先分成左右两块

plt.subplot(121)#绘制第一块

plt.plot([10,15,20])

plt.subplot(122)#绘制第2块

plt.plot([10,15,20])


plt.savefig('tmp.png')

plt.close('all')

左右均等

上下:

plt.figure(21)#先分成上下两块

plt.subplot(211)#绘制第一块

plt.plot([10,15,20])

plt.subplot(212)#绘制第2块

plt.plot([10,15,20])


plt.savefig('tmp.png')

plt.close('all')

上下均等

plt.figure(22)#先分成4两块

plt.subplot(221)#绘制第一块

plt.plot([10,15,20])

plt.subplot(222)#绘制第2块

plt.plot([10,15,20])

plt.subplot(223)#绘制第3块

plt.plot([10,15,20])

plt.subplot(224)#绘制第4块

plt.plot([10,15,20])

plt.savefig('tmp.png')

plt.close('all')

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

推荐阅读更多精彩内容