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”


Python绘制统计图表_第1张图片
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可以让文字歪过来,在文本过长互相压盖时使用。


Python绘制统计图表_第2张图片
定制坐标轴

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字符串。


Python绘制统计图表_第3张图片
定制图例

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回来。


Python绘制统计图表_第4张图片
定制标题

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句。长宽单位是英寸,建议估摸着多试几次找满意的尺寸。


Python绘制统计图表_第5张图片
定制图片尺寸

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')

Python绘制统计图表_第6张图片
左右均等

上下:

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')

Python绘制统计图表_第7张图片
上下均等

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')

Python绘制统计图表_第8张图片
4拼

你可能感兴趣的:(Python绘制统计图表)