自學(xué)整理記錄,大神見笑
最流行的Python底層繪圖庫,主要做數(shù)據(jù)可視化圖表箫荡,模仿MATLAB構(gòu)建,名字也取自MATLAB
網(wǎng)站可以查看事例代碼及樣式渔隶,https://matplotlib.org/
其他繪圖工具
1.前端框架百度ECharts羔挡,圖片可交互,網(wǎng)站http://www.echartsjs.com/index.html
2.python框架plotly间唉,畫圖界的github绞灼,圖片可交互,網(wǎng)站https://plot.ly/python/
3.python框架seaborn呈野,類似matplotlib低矮,,seaborn和matplotlib圖片都不可交互網(wǎng)站http://seaborn.pydata.org/examples/index.html導(dǎo)入pyplot
from matplotlib import pyplot as plt
- 常用統(tǒng)計圖
1.折線圖被冒,主要查看變化
2.直方圖军掂,繪制連續(xù)型數(shù)據(jù),主要是統(tǒng)計
3.條形圖昨悼,繪制離散型數(shù)據(jù)蝗锥,主要是統(tǒng)計
4.散點圖,主要查看分布規(guī)律
折線圖
- 提供數(shù)據(jù)率触,指定x橫軸的值终议,指定y縱軸的值
x = range(2, 26, 2)
y = [15, 13, 14.5, 17, 20, 25, 26, 26, 24, 22, 18, 15]
- 繪圖,傳入x和y,通過plot繪制出折線圖
plt.plot(x, y)
- 展示圖在執(zhí)行程序的時候展示圖形
plt.show()
- 注:x和y的列表個數(shù)要相同穴张,否則會報錯ValueError
折線圖擴展
- 設(shè)置圖片大小和像素
plt.figure(figsize=(20, 8), dpi=80)
注:要寫在繪圖之前
注:figsize兩個參數(shù)分別表示長度和寬度
注:dpi是讓圖像更清晰
保存圖片
plt.savefig("./test1.png")
注:要寫在繪圖之后
注:參數(shù)是保存的路徑
注:自己加后綴保存成自己想要的格式细燎,比如保存為svg矢量圖格式,放大不會有鋸齒
軸刻度
plt.xticks(range(2, 26, 2))
plt.yticks(range(min(y) + 1, max(y) + 1))
注:上面代碼分別為設(shè)置x軸刻度和y軸刻度
調(diào)整軸刻度顯示信息(包含顯示內(nèi)容陆馁、中文亂碼)
my_font = font_manager.FontProperties(fname="C:\Windows\ttt\simsun.ttc", size=14)
# 調(diào)整x軸刻度信息
_x = list(x)
_xtick_labels = ["10點{}分".format(i) for i in range(60)]
_xtick_labels += ["11點{}分".format(i) for i in range(60)]
plt.xticks(_x[::3], _xtick_labels[::3], rotation=45, fontproperties=my_font)
- 注:需要導(dǎo)包
from matplotlib import font_manager
注:rotation表示旋轉(zhuǎn)角度找颓,順時針旋轉(zhuǎn)
注:fontproperties正常顯示中文字體
注:fename后面的路徑一定要手動輸入
注:可以在FontProperties中的參數(shù)size設(shè)置字體大小
注:y軸同理
x軸、y軸和標(biāo)題的提示信息
plt.xlabel("時間", fontproperties=my_font)
plt.ylabel("時間/溫度(℃)", fontproperties=my_font)
plt.title("10點到12點每分鐘溫度變化圖", fontproperties=my_font)
注:xlabel即x軸信息叮贩,ylabel即y軸信息击狮,title即標(biāo)題
注:如果中文亂碼,則在后面添加參數(shù)fontproperties即可
繪制網(wǎng)格
plt.grid(alpha=0.4)
注:alpha表示網(wǎng)格透明度益老,0透明彪蓬,1不透明
注:網(wǎng)格的密度,由x軸和y軸刻度控制
繪制多個線條
plt.plot(x, y_1)
plt.plot(x, y_2)
注:再plot一次就會畫出多一條線
添加圖例
plt.plot(x, y_1, label="自己")
plt.plot(x, y_2, label="同桌")
...
plt.legend(prop=my_font, loc="upper right")
注:兩個步驟捺萌,首先在plot方法中添加參數(shù)label档冬,然后寫添加圖例方法legeng()
注:legend中prop參數(shù)是解決中文亂碼
注:legend中l(wèi)oc參數(shù)是圖例放的位置,默認是best桃纯,系統(tǒng)會放在最合適的位置酷誓,自己可以寫英文或者漢字,查原碼即可
線條樣式(顏色态坦、線條風(fēng)格盐数,線條寬度等)
plt.plot(x, y_1,color="r", linestyle="--", linewidth=5)
- 注:color參數(shù)可以填顏色字符,或者十六進制顏色代碼都可以
- 注:linestyle參數(shù)可以改變線條風(fēng)格
- 注:linewidth參數(shù)越大越粗
添加文本注釋
添加水印
散點圖
- 繪圖伞梯,傳入x和y玫氢,通過scatter繪制出散點圖
plt.scatter(x, y)
- 注:x和y的列表個數(shù)要相同,否則會報錯ValueError
- 注: 散點圖擴展與折線圖一樣
條形圖
- 繪圖谜诫,傳入x和y漾峡,通過bar繪制出條形圖
plt.bar(x, y)
- 注:默認會豎著顯示
條形圖擴展
- 橫著顯示
plt.barh(x, y)
- 條形寬度
plt.bar(x, y, width=0.3)
plt.barh(x, y, height=0.3)
- 注:豎著使用width,橫著使用height
- 注:其余擴展與折線圖類似
- 注:繪制多次條形圖喻旷,即將x軸向右移動即可生逸,但移動的距離,次數(shù)總和不能超過1且预,且寬度要合適牺陶,如下圖
直方圖
- 繪圖,傳入a和組數(shù)20辣之,通過hist繪制出直方圖
plt.hist(a, 20)
- 注:a參數(shù)是原始數(shù)據(jù)掰伸,20參數(shù)是組數(shù),即有多少個直方
- 注:直方圖會自己計算數(shù)據(jù)出現(xiàn)的個數(shù)怀估,顯示在圖上狮鸭,所以需要原始數(shù)據(jù)合搅,不能用統(tǒng)計好之后的數(shù)據(jù)
- 注:如果是統(tǒng)計好的數(shù)據(jù),依然想繪制成直方圖的樣式歧蕉,使用條形圖即可
- 注:使用條形圖時畫出直方圖效果灾部,需要將width設(shè)置為1,并且x軸刻度向左移動0.5即可
直方圖擴展
- 計算組數(shù)
d = 5
num_bins = (max(a) - min(a)) // d
...
plt.hist(a, num_bins)
plt.xticks(range(min(a), max(a)+d, d))
注:num_bins即組數(shù)惯退,d為組距
注:最大值與最小值的差除組距赌髓,一定要保證整除,否則x軸顯示會偏移
注:xticks方法中催跪,max+d保證值都能顯示完全
頻率分布直方圖
plt.hist(a, num_bins, normed=True)
- 注:正常y軸會顯示出現(xiàn)的區(qū)域內(nèi)出現(xiàn)的個數(shù)
- 注:normed設(shè)置為True锁蠕,即會將y軸顯示為小數(shù)格式的頻率