pip install matplotlibapp
matplotlib [mæt'plotlib] 是Python 2D繪圖領域的基礎套件,它讓使用者將數據圖形化,並提供多樣化的輸出格式dom
給你們舉個例子 用的實例化對象 ide
import matplotlib.pyplot as plt
#導入3d模塊
from mpl_toolkits.mplot3d.axes3d import Axes3D
import numpy as np
import pandas as pd
#創建一個測試類
class TestPlot(object):
#初始化方法
def __init__(self,plt):
self.plt = plt
#配置中文字體
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['font.family'] = 'sans-serif'
#柱狀圖測試
def test_zhu(self):
plt = self.plt
#定義數據
GDP = [12404.1,13908.57,9350,8000]
#填充數據
plt.bar(['北京','天津','上海','重慶'],GDP,color="green",alpha=0.2)
#填寫標籤
plt.ylabel('生產總值')
plt.title('四大直轄市GDP比對')
#刻度範圍
plt.ylim([5000,15000])
#繪製
plt.show()
#繪製條形圖
def test_tiao(self):
plt = self.plt
#定義數據
price = [40,30,60,50]
#填充數據
plt.barh(range(4),price,align='center',color="blue",alpha=0.3)
#設置標籤
plt.xlabel('價格')
#編輯商品
plt.yticks(range(4),['三國','水滸','西遊','紅樓'])
#設置標題
plt.title('商品價格表')
plt.show()
#折線圖方法
def test_line(self):
plt = self.plt
#定義X軸數據
x = ['2019-5-1','2019-5-2','2019-5-3','2019-5-4']
#定義Y軸數據
y1 = ['30℃','25℃','15℃','25℃']
y2 = [30,50,60,40]
#填充數據
plt.plot(x,y1,label = '溫度')
plt.plot(x,y2,label = '溼度')
#設置圖例
plt.legend()
#繪製
plt.show()
#繪製散點圖
def test_sandian(self):
plt = self.plt
#定義數據
x = list(range(0,101))
y = [value * np.random.rand() for value in x]
#填充數據
plt.scatter(x,y,s=30,c = 'red')
#繪製
plt.show()
#定義3D散點
def test_3d(self):
plt = self.plt
#定義數據
x = np.random.randint(0,20,size=20)
y = np.random.randint(0,20,size=20)
z = np.random.randint(0,20,size=20)
# a = np.random.randint(0,20,size=20)
# b = np.random.randint(0,20,size=20)
# c = np.random.randint(0,20,size=20)
# d = np.random.randint(0,20,size=20)
# e = np.random.randint(0,20,size=20)
#建立二維對象
fig = plt.figure()
#強轉
axes3d = Axes3D(fig)
#填充數據
axes3d.scatter3D(x,y,z)
#繪製
plt.show()
#定義餅圖方法
def test_bing(self):
plt = self.plt
#定義數據
beijing = [10,18,40,65]
#定義標籤
label = ['2-3年','3年','5年','8年以上']
#顏色
color = ['red','blue','green','pink']
#作好容器
indic = []
for index,item in enumerate(beijing):
#判斷
if item == max(beijing):
indic.append(0.1)
elif index == 1:
indic.append(0.1)
else:
indic.append(0.1)
#填充數據 autopct="%1.1f%%"以小數的形式展現
plt.pie(beijing,labels=label,colors=color,startangle=160,shadow=True,explode=tuple(indic),autopct="%1.1f%%")
#標題
plt.title("3D餅圖突出展現工齡佔比")
#繪製
plt.show()
#定義面積圖方法
def test_mian(self):
plt = self.plt
#定義數據
date = ['2019-5-1','2019-5-2','2019-5-3','2019-5-4']
#收入
earn = [156,356,156,70]
#定義支出
pay = [[10,30,5,20],[12,20,10,20],[10,15,30,20],[10,20,30,5]]
#填充數據
plt.stackplot(date,earn,pay,colors=['green','pink','orange','blue'])
#生成圖例
plt.plot([],[],color='red',label="收入")
plt.plot([],[],color='blue',label="早飯")
plt.plot([],[],color='green',label="中午餐")
plt.plot([],[],color='pink',label="晚飯")
plt.legend()
plt.title('四天支出收入')
plt.show()
if __name__ == "__main__":
#實例化一個對象
testplot = TestPlot(plt)
#調用方法
#折線
testplot.test_line()
#散點
testplot.test_sandian()
#3D
testplot.test_3d()
#條形
testplot.test_tiao()
#柱狀圖
testplot.test_zhu()
#3D餅圖
testplot.test_bing()
#面積圖
testplot.test_mian()
總結:字體
bar 柱狀圖 spa
barh 條形圖3d
plot 折線圖對象
scatter 散點圖ip
scatter3D 3D散點圖ci
pie 3D餅圖
stackplot 面積圖
plt.title('給表的標題')
plt.show() 繪製圖表
plt.legend()繪製圖例