1. 程式人生 > >matplotlib的幾個圖形

matplotlib的幾個圖形

在收集到資料的時候,常常需要用圖形的形式顯示出來,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()

一些說明後面有時間的時候補上,目前就是一個粗糙的版本