Python-matplotlib入門--基礎圖表的繪製

生而爲人,請務必善良

matplotlib 實現數據可視化

前提:安裝matplotlib庫、numpy庫及pandas庫

實例目錄:

1、線性圖
2、直方圖
3、條狀圖
4、多序列條狀圖
5、餅狀圖
6、極座標圖
7、散點圖
8、3D曲面
9、3D散點
10、動畫

基礎圖表實例

1、線性圖:

爲pandas數據結構繪製線性圖

這裏寫圖片描述

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

data = {'series1':[1,2,3,4,5],
        'series2':[2,3,4,5,6],
        'series3':[3,4,5,6,7],
        }
df = pd.DataFrame(data)
x = np.arange(5)
plt.axis([0,5,0,9])
plt.plot(x,df)
plt.legend(data,loc=2)
plt.show()

2、直方圖:

這裏寫圖片描述

#直方圖繪製
import matplotlib.pyplot as plt
import numpy as np

np.random.seed(0)#隨機種子
m,sigma = 50,5 #均值和標準差
a = np.random.normal(m,sigma,size=100)#一百個元素

#該函數參數爲直方圖上面的信息,最後兩個參數爲顏色的設置
#第二個參數爲 bin:生成直方圖的個數
#normed=1表示出現的概率,=0,表示出現的個數
plt.hist(a,40,normed=0,histtype='stepfilled',facecolor='b',alpha=0.7)
plt.title('test')
plt.savefig('hist.png',dpi=600)#保存爲PNG文件,dpi爲像素
plt.show()

3、條狀圖:

這裏寫圖片描述

#條狀圖
import matplotlib.pyplot as plt
import numpy as np
index = np.arange(5)
values = [5,3,2,4,5]
plt.bar(index,values,color='b',alpha=0.7)
plt.title('bar')
plt.xticks(index+0.2,['s','m','i','l','e'])#設置刻度標籤
plt.savefig('bar.png')#保存爲圖片
plt.show()

4、多序列條狀圖:

這裏寫圖片描述

#多序列條狀圖
import matplotlib.pyplot as plt
import numpy as np
index = np.arange(5)
values1 = [5,3,2,4,5]
values2 = [6,5,3,5,7]
values3 = [7,4,4,6,8]

b = 0.25#設置b爲調控距離
plt.axis([0,5,0,10])#x軸起止,y軸起止座標
plt.bar(index,values1,b,color='r',alpha=0.7)
plt.bar(index+b,values2,b,color='y',alpha=0.7)
plt.bar(index+2*b,values3,b,color='b',alpha=0.7)
plt.title('A bar chart',fontsize=15)#標題及字體
plt.xticks(index+b,['s','m','i','l','e'])#設置刻度標籤
plt.show()

5、餅狀圖:

這裏寫圖片描述

#餅圖繪製
import matplotlib.pyplot as plt

labels = 'Dog','Cat','Fish','Hen' #餅圖標籤
sizes = [30,35,15,20]#餅圖的大小
explode = (0,0.1,0,0)#0.1爲第二個元素凸出距離
#餅圖繪製函數
plt.pie(sizes,explode=explode,labels=labels,\
        autopct='%1.1f%%',shadow=False,startangle=90)

plt.axis('equal')
#plt.savefig('bing',dpi=600)#保存爲PNG文件,dpi爲像素
plt.show()

6、極座標圖:

這裏寫圖片描述

#極座標圖繪製
import matplotlib.pyplot as plt
import numpy as np

N = 7#極座標圖中數據的個數
t = np.linspace(0.0,2*np.pi,N,endpoint=False)#0-2π 按照個數分出N個不同的角度
rd = 10*np.random.rand(N)#生成每一個角度對應的值
w = np.pi / 2*np.random.rand(N)#寬度值

colors = np.array(['navy','darkgreen','lightgreen','pink','blue','brown','violet'])#顏色數組

#繪製極座標方法
ax = plt.subplot(111,projection='polar')#一個繪圖區域,projection='polar'極座標參數,採取面向對象方法
bars = ax.bar(t, rd, width=w, bottom=0.0,color=colors)
#分別對應:left(繪製極座標系中顏色區域開始位置),height(從中心點到邊緣繪製的長度),width(每一個繪圖區域的面積)
'''  
plt.show()

7、散點圖:

這裏寫圖片描述

#面型對象方法繪製散點圖
import numpy as np
import matplotlib.pyplot as plt

fig , ax = plt.subplots()#函數變成對象,參數分別對應plt.subplots生成的,fig:圖表,ax:繪圖區域,參數爲空默認繪圖區域爲111
ax.plot(10*np.random.randn(68),10*np.random.randn(68),'*')#(橫軸,縱軸,標點方式) randn生成的隨機數呈現正態分佈乘以10空間範圍內,顯得更擴散
ax.set_title('stars')

plt.show()

8、3D曲面:

這裏寫圖片描述

#3D曲面
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(-5,5,0.5)
Y = np.arange(-5,5,0.5)
X,Y = np.meshgrid(X,Y)
#函數(變換函數可有不同效果)
def f(x,y):
    return (1-Y**4+X**4)*np.exp(-x**2-y**2)

#z=f(x,y)生成三維結構
ax.plot_surface(X,Y,f(X,Y),rstride=1,cstride=1,cmap=plt.cm.hot)#cmap關鍵字可指定各顏色
ax.view_init(elev=10,azim=125)#函數功能:旋轉曲面,elev,azim兩個參數作用分別爲:查看曲面高度;曲面旋轉角度
plt.show()

9、3D散點:

這裏寫圖片描述

#3D散點圖

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)

x = np.random.randint(30,40,50)
y = np.random.randint(20,30,50)
z = np.random.randint(10,20,50)

x1 = np.random.randint(70,80,50)
y1 = np.random.randint(60,70,50)
z1 = np.random.randint(50,70,50)

x2 = np.random.randint(40,50,50)
y2 = np.random.randint(50,60,50)
z2 = np.random.randint(30,40,50)

ax.scatter(x,y,z)
ax.scatter(x1,y1,z1,c='b',marker='^')
ax.scatter(x2,y2,z2,c='r',marker='*')

ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')

plt.show()

10、製作動畫:

#製作動畫
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as an

fig = plt.figure()
ax = fig.add_subplot(111)
N = 10
x = np.random.rand(N)
y = np.random.rand(N)
z = np.random.rand(N)
circles,triangles,dots = ax.plot(x,'ro',y,'g^',z,'b.')#設置顏色及形狀
ax.set_ylim(0,1)
plt.axis('off')

def update(data):
    circles.set_ydata(data[0])
    triangles.set_ydata(data[1])
    return circles,triangles

def generate():
    while True:
        yield np.random.rand(2,N)

anm = an.FuncAnimation(fig,update,generate,interval=150)

plt.show()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章