matplotlib的幾個圖形
阿新 • • 發佈:2018-11-30
在收集到資料的時候,常常需要用圖形的形式顯示出來,matplotlib提供了強大的功能。下面自己總結幾個圖形的用法,已備後面檢視。
1. 折線圖
import numpy as np import matplotlib.pyplot as plt %matplotlib inline #用於jupyter 中顯示圖形用的 import matplotlib as mpl mpl.rcParams['font.sans-serif'] = ['SimHei'] #解決中文顯示問題 mpl.rcParams['axes.unicode_minus'] = False #解決中文顯示問題 x = [2011,2012,2013,2014,2015] y = [2011,2012,2013,2014,2015] # plt.figure(num=1, figsize=(2,2)) #指定figure(num, figsize)的編號num並figsize引數指定figure的大小 plt.figure() plt.subplot(221)#221分別表示2行2列第一個 plt.title("人口普查")#設定標題 plt.plot(x,y,label= "this is a") # plt.xlim(2000,2016) plt.legend(loc="center") plt.xlabel("年份") plt.ylabel("人數") plt.xticks([2011,2012,2013,2014,2015], ['第1年','第2年','第3年','第4年','第5年']) ax = plt.gca() ax.spines['right'].set_color('None') ax.spines['top'].set_color('None') plt.subplot(222) plt.title("人口普查1") plt.plot(x,y,label= "this is b") plt.legend(loc="center") plt.xlabel("年份") plt.ylabel("人數") plt.xticks([2011,2012,2013,2014,2015], ['第1年','第2年','第3年','第4年','第5年'])#設定刻度 ax = plt.gca() ax.spines['right'].set_color('None')#去除邊款 ax.spines['top'].set_color('None') plt.savefig("a.png")#儲存圖片 支援png jpg 等具體檢視文件 plt.savefig("a.jpg") plt.show()
2. 柱狀圖
import numpy as np import matplotlib.pyplot as plt %matplotlib inline import matplotlib as mpl mpl.rcParams['font.sans-serif'] = ['SimHei'] #解決中文顯示問題 mpl.rcParams['axes.unicode_minus'] = False #解決中文顯示問題 plt.figure() beijing=[200, 900, 100, 20, 1200] shanghai =[190,500, 103, 30, 1100] x = np.array([2011,2012, 2013,2014,2015]) plt.bar(x,beijing,width =0.4,label= "beijig", align='edge')##柱狀圖 plt.bar(x-0.2,shanghai,width =0.4, label="shanghai") plt.legend() plt.ylabel("GDP") plt.xlabel("年份") plt.show()
3. 餅圖
from matplotlib import pyplot as plt #調節圖形大小,寬,高 plt.figure(figsize=(6,9)) #定義餅狀圖的標籤,標籤是列表 labels = [u'第一部分',u'第二部分',u'第三部分'] #每個標籤佔多大,會自動去算百分比 sizes = [60,30,10] colors = ['red','yellowgreen','lightskyblue'] #將某部分爆炸出來, 使用括號,將第一塊分割出來,數值的大小是分割出來的與其他兩塊的間隙 explode = (0.05,0,0) patches,l_text,p_text = plt.pie(sizes,explode=explode,labels=labels,colors=colors, labeldistance = 1.1,autopct = '%3.1f%%',shadow = False, startangle = 90,pctdistance = 0.6) #labeldistance,文字的位置離遠點有多遠,1.1指1.1倍半徑的位置 #autopct,圓裡面的文字格式,%3.1f%%表示小數有三位,整數有一位的浮點數 #shadow,餅是否有陰影 #startangle,起始角度,0,表示從0開始逆時針轉,為第一塊。一般選擇從90度開始比較好看 #pctdistance,百分比的text離圓心的距離 #patches, l_texts, p_texts,為了得到餅圖的返回值,p_texts餅圖內部文字的,l_texts餅圖外label的文字 #改變文字的大小 #方法是把每一個text遍歷。呼叫set_size方法設定它的屬性 for t in l_text: t.set_size=(30) for t in p_text: t.set_size=(20) plt.axis('equal') plt.legend() plt.show()
4. 直方圖
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] #解決中文顯示問題
mpl.rcParams['axes.unicode_minus'] = False #解決中文顯示問題
#直方圖 hist(x, bins,weights,bottom)
#x 資料
#bins資料分組數
#weights 每個元素對bins高度的貢獻值
#bottom 底部從多少開始
#histtype 型別 預設bar
data = np.random.randn(1000)
weights = np.ones(1000)+1
plt.hist(data,bins=80,weights =weights, bottom = 40, histtype = 'step',orientation ='horizontal')
plt.show()
5.散點圖
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] #解決中文顯示問題
mpl.rcParams['axes.unicode_minus'] = False #解決中文顯示問題
#散點圖
#scatter
x = np.random.randn(10)
y = np.random.randn(10)
z = np.array([1,6,7,8,2,3,16,8,9,6])*100 #大小
plt.scatter(x,y,z,c= np.random.randint(0, 255, 10), alpha=0.5)#alpha 透明度 c顏色
plt.show()
一些說明後面有時間的時候補上,目前就是一個粗糙的版本