目錄
基本使用
解決中文亂碼
一個坐標系繪制多個圖像
多個坐標系繪制
基本使用
- 什么是Matplotlib
- 是專門用于開發2D圖表(包括3D圖表)
- 以漸進,交互式方式實現數據可視化
- 為什么要學習matplotlib
- 可視化是在整個數據挖掘的關鍵輔助工具,可以清晰的理解數據,從而調整我們的分析方法
- 能將數據進行可視化,更直接的呈現
- 使數據更加客觀,更具說服力
# 圖形繪制流程:
import matplotlib.pyplot as plt
# 1創建畫布
plt.figure(figsize=(20,8),dpi=(100))
# figsize指定圖形的長寬
# dpi指定圖像的清晰度
# 2繪制圖像
plt.plot([1,2],[10,20])
# 3顯示圖像
plt.show()
# 例子:折線圖繪制與顯示
import matplotlib.pyplot as plot
plt.figure(figsize=(20,8),dpi=100)
plt.plot([1,2,3,4,5],[10,20,30,40,50])
plt.show()
# 例子:折線圖
import matplotlib.pyplot as plt
import randomx = range(60)
y = [random.uniform(15,18) for I in x]plt.figure(figsize=(20,8),dpi=100)
plt.plot(x,y)
plt.show()
# 添加自定義x,y刻度
import matplotlib.pyplot as plt
import random
from pylab import mpl# 防止中文亂碼
mpl.rcParams["font.sans-serif"] = ["SimHei"]x = range(60)
y = [random.uniform(15,18) for i in x]
# 添加x,y軸刻度
x_ticks_label = ['11點{}分'.format(i) for i in x]
y_ticks = range(40)plt.figure(figsize=(20,8),dpi=100)
plt.plot(x,y)# 修改x,y軸坐標刻度顯示,間隔為5
plt.xticks(x[::5],x_ticks_label[::5])
plt.yticks(y_ticks[::5])plt.show()
# 添加網格顯示
# 添加網格顯示,alpha表示透明度
plt.grid(True,linestyle="--",alpha=0.5)import matplotlib.pyplot as plt
import random
from pylab import mpl# 防止中文亂碼
mpl.rcParams["font.sans-serif"] = ["SimHei"]x = range(60)
y = [random.uniform(15,18) for i in x]
# 添加x,y軸刻度
x_ticks_label = ['11點{}分'.format(i) for i in x]
y_ticks = range(40)plt.figure(figsize=(20,8),dpi=100)
plt.plot(x,y)# 修改x,y軸坐標刻度顯示,間隔為5
plt.xticks(x[::5],x_ticks_label[::5])
plt.yticks(y_ticks[::5])
# 添加網格顯示,alpha表示透明度
plt.grid(True,linestyle="--",alpha=0.5)
plt.show()
# 添加描述信息,x軸,y軸,標題
# 添加描述信息
plt.xlabel("時間",fontsize=20)
plt.ylabel("溫度",fontsize=20)
plt.title("中午11點-12點某城市溫度變化圖",fontsize=20)import matplotlib.pyplot as plt
import random
from pylab import mpl# 防止中文亂碼
mpl.rcParams["font.sans-serif"] = ["SimHei"]x = range(60)
y = [random.uniform(15,18) for i in x]
# 添加x,y軸刻度
x_ticks_label = ['11點{}分'.format(i) for i in x]
y_ticks = range(40)plt.figure(figsize=(20,8),dpi=100)
plt.plot(x,y)# 修改x,y軸坐標刻度顯示,間隔為5
plt.xticks(x[::5],x_ticks_label[::5])
plt.yticks(y_ticks[::5])
# 添加網格顯示,alpha表示透明度
plt.grid(True,linestyle="--",alpha=0.5)
# 添加描述信息
plt.xlabel("時間",fontsize=20)
plt.ylabel("溫度",fontsize=20)
plt.title("中午11點-12點某城市溫度變化圖",fontsize=20)
plt.show()
# 圖像保存
# 保存圖像到指定路徑
plt.savefig("test.png")
注意:plt.show()會釋放figure資源,如果在顯示圖像之后保存圖片將只能保存空圖片
import matplotlib.pyplot as plt
import random
from pylab import mpl# 防止中文亂碼
mpl.rcParams["font.sans-serif"] = ["SimHei"]x = range(60)
y = [random.uniform(15,18) for i in x]
# 添加x,y軸刻度
x_ticks_label = ['11點{}分'.format(i) for i in x]
y_ticks = range(40)plt.figure(figsize=(20,8),dpi=100)
plt.plot(x,y)# 修改x,y軸坐標刻度顯示,間隔為5
plt.xticks(x[::5],x_ticks_label[::5])
plt.yticks(y_ticks[::5])
# 添加網格顯示,alpha表示透明度
plt.grid(True,linestyle="--",alpha=0.5)
# 添加描述信息
plt.xlabel("時間",fontsize=20)
plt.ylabel("溫度",fontsize=20)
plt.title("中午11點-12點某城市溫度變化圖",fontsize=20)
# 保存圖片
plt.savefig("test.png")
plt.show()
解決中文亂碼
# 解決中文亂碼問題
from pylab import mpl
# 設置顯示中文字體
mpl.rcParams["font.sans-serif"] = ["SimHei"]# 有時候,字體更改后,會導致坐標軸中的部分字符無法正常顯示,此 # 時需要更改axes.unicode_minus參數
# 設置正常顯示符號
mpl.rcParams["axes.unicode_minus"] = False
一個坐標系繪制多個圖像
# 如何在一個坐標系中繪制多個圖像?
多次ploty_beijing = [random.uniform(1,3) for I in x]
y_shanghai = [random.uniform(15,18) for I in x]plt.plot(x,y_beijing)
plt.plot(x,y_shanghai,color='r',linestyle='--')import matplotlib.pyplot as plt
import random
from pylab import mpl# 防止中文亂碼
mpl.rcParams["font.sans-serif"] = ["SimHei"]x = range(60)
y = [random.uniform(15,18) for i in x]
y_beijing = [random.uniform(1,3) for i in x]# 添加x,y軸刻度
x_ticks_label = ['11點{}分'.format(i) for i in x]
y_ticks = range(40)plt.figure(figsize=(20,8),dpi=100)
plt.plot(x,y)
plt.plot(x,y_beijing,color='r',linestyle='--')# 修改x,y軸坐標刻度顯示,間隔為5
plt.xticks(x[::5],x_ticks_label[::5])
plt.yticks(y_ticks[::5])
# 添加網格顯示,alpha表示透明度
plt.grid(True,linestyle="--",alpha=0.5)
# 添加描述信息
plt.xlabel("時間",fontsize=20)
plt.ylabel("溫度",fontsize=20)
plt.title("中午11點-12點某城市溫度變化圖",fontsize=20)
# 保存圖片
plt.savefig("test.png")plt.show()
# 顯示圖例
plt.plot(x,y_beijing,label="北京")
plt.plot(x,y_shanghai,label="上海")# 顯示圖例
plt.legend(loc="best")import matplotlib.pyplot as plt
import random
from pylab import mpl# 防止中文亂碼
mpl.rcParams["font.sans-serif"] = ["SimHei"]x = range(60)
y = [random.uniform(15,18) for i in x]
y_beijing = [random.uniform(1,3) for i in x]# 添加x,y軸刻度
x_ticks_label = ['11點{}分'.format(i) for i in x]
y_ticks = range(40)plt.figure(figsize=(20,8),dpi=100)
plt.plot(x,y,label="上海")
plt.plot(x,y_beijing,color='r',linestyle='--',label="北京")# 修改x,y軸坐標刻度顯示,間隔為5
plt.xticks(x[::5],x_ticks_label[::5])
plt.yticks(y_ticks[::5])
# 添加網格顯示,alpha表示透明度
plt.grid(True,linestyle="--",alpha=0.5)
# 添加描述信息
plt.xlabel("時間",fontsize=20)
plt.ylabel("溫度",fontsize=20)
plt.title("中午11點-12點某城市溫度變化圖",fontsize=20)
# 保存圖片
plt.savefig("test.png")
plt.legend(loc="best")plt.show()
多個坐標系繪制
# 多個坐標系實現繪制
import matplotlib.pyplot as plt
import random
from pylab import mpl# 防止中文亂碼
mpl.rcParams["font.sans-serif"] = ["SimHei"]x = range(60)
y_shanghai = [random.uniform(15,18) for i in x]
y_beijing = [random.uniform(1,3) for i in x]# 創建畫布
fig,axes = plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)axes[0].plot(x,y_shanghai,label="上海")
axes[1].plot(x,y_beijing,color='r',linestyle='--',label="北京")
plt.show()
# 修改其他的模塊的代碼
import matplotlib.pyplot as plt
import random
from pylab import mpl# 防止中文亂碼
mpl.rcParams["font.sans-serif"] = ["SimHei"]x = range(60)
y_shanghai = [random.uniform(15,18) for i in x]
y_beijing = [random.uniform(1,3) for i in x]# 創建畫布
fig,axes = plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)axes[0].plot(x,y_shanghai,label="上海")
axes[1].plot(x,y_beijing,color='r',linestyle='--',label="北京")# 添加x,y軸刻度
x_ticks_label = ['11點{}分'.format(i) for i in x]
y_ticks = range(40)# 修改x,y軸坐標刻度顯示,間隔為5
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])# 添加網格顯示,alpha表示透明度
axes[0].grid(True,linestyle="--",alpha=0.5)
axes[1].grid(True,linestyle="--",alpha=0.5)# 添加描述信息
axes[0].set_xlabel("時間")
axes[0].set_ylabel("溫度")
axes[0].set_title("中午11點-12點某城市溫度變化圖",fontsize=20)
axes[1].set_xlabel("時間")
axes[1].set_ylabel("溫度")
axes[1].set_title("中午11點-12點某城市溫度變化圖",fontsize=20)# 保存圖片
plt.savefig("test.png")# 添加圖例
axes[0].legend(loc=0)
axes[1].legend(loc=0)plt.show()
# 使用numpy繪制sin圖像
import matplotlib.pyplot as plt
import numpy as np# 準備數組
x = np.linspace(-10,10,1000)
y = np.sin(x)# 創建畫布
plt.figure(figsize=(20,8),dpi=100)# 繪制函數圖像
plt.plot(x,y)# 添加網格顯示
plt.grid()# 顯示圖像
plt.show()