python對數(shù)據(jù)統(tǒng)計(jì)特別友好感凤,原生庫即有相關(guān)支持:matplotlib
1.環(huán)境配置
sudo pip install matplotlib
安裝完成后需要調(diào)整下配置文件(mac可跳過)兴蒸,原因:python解釋器各個(gè)平臺版本都有辛掠,理論上會cover大多數(shù)底層接口红省,所以看起來“跨平臺”劣光。但是部分與繪圖/進(jìn)程/系統(tǒng)內(nèi)核等相關(guān)功能亭引,不同系統(tǒng)間差異較大贞岭,python尚未全cover八毯。比如我們matplotlib在不同系統(tǒng)上兼容性就有點(diǎn)問題,所以需要通過配置文件來獲得“跨平臺”的效果瞄桨。針對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])#輸入一個(gè)成員都是數(shù)字的數(shù)組
plt.savefig('tmp.png')#保存為圖片
plt.close('all')#清空畫布尿孔。不要省略這一句,不然多個(gè)圖會有bug筹麸。
一共3句活合,一句都不能少,這就輸出了個(gè)圖片“tmp.png”
3.定制坐標(biāo)軸
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個(gè)數(shù)組白指,定制了x軸。第一個(gè)數(shù)組標(biāo)記了文本出現(xiàn)的位置酵紫,第二個(gè)數(shù)組是unicode字符串告嘲。rotation可以讓文字歪過來,在文本過長互相壓蓋時(shí)使用奖地。
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')
畫圖時(shí)加個(gè)參數(shù)“l(fā)abel”橄唬,定義legend之后就會自動(dòng)出圖例。同樣只支持unicode字符串参歹。
5.定制標(biāo)題
plt.plot( [12,34,56,78,90])
plt.title('反饋率'.decode('utf-8'))
plt.savefig('tmp.png')
plt.close('all')
只需要加一句仰楚,傳入unicode字符串。python默認(rèn)是unicode犬庇,但是寫了coding:utf-8之后會把默認(rèn)編碼修改成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')
需要在繪制之前臭挽,設(shè)定圖片尺寸捂襟,只需要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)
條形圖比其他圖多一個(gè)必選輸入捉貌,需要輸入條形長度和條形位置支鸡。
8.多子圖
也就是在一張圖片上,畫多個(gè)圖表趁窃。常見的就是上下組合牧挣,左右組合,4拼醒陆。不建議畫更復(fù)雜的圖瀑构。
左右:
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')