Matplitlib绘图入门1,这一篇就够了
生活随笔
收集整理的這篇文章主要介紹了
Matplitlib绘图入门1,这一篇就够了
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Matplitlib繪圖入門1,這一篇就夠了
- 1. 繪制簡單的圖表(標題、標簽軸、刻度軸、表說明)
- 2. 繪圖輔助函數方法,繪制多個圖(隨機點繪制多個子圖,點狀、x狀等)
- 3. 可交互式繪圖(一圖單線關閉新展現一圖,及一圖多線)
- 4. 3種方法簡化加速渲染圖
- 參考
1. 繪制簡單的圖表(標題、標簽軸、刻度軸、表說明)
- 設置標題title
- 設置線等說明legend
- 設置x軸標簽xlabel,y軸標簽ylable
- 取消設置軸刻度xticks,yticks【plt.yticks([]) # 去掉y軸刻度 plt.xticks([]) # 去掉x軸刻度】
# matplotlib基礎# 使用軸創建圖形的最簡單方法是使用 pyplot.subplots
# 使用 Axes.plot 在軸上繪制一些數據import matplotlib.pyplot as plt
import numpy as np# 創建圖表(包含簡單的坐標軸)
import pandasfig, ax = plt.subplots()
# 繪制一些數據在坐標軸上
ax.plot([1, 2, 3, 4], [1, 4, 2, 3]) # 默認x(1,2,3,4),y:(1,4,2,3)# 繪圖(同如上倆句)
plt.plot([1, 2, 3, 4], [1, 3, 2, 4]) # 默認x(1,2,3,4),y:(1,3,2,4)
fig.show()fig = plt.figure() # 沒有軸的空表
fig.show()fig, ax = plt.subplots() # 空表單軸
fig.show()fig, axs = plt.subplots(2, 2) # 一個圖表倆個軸
plt.title("test table") # 設置表title
plt.yticks([]) # 去掉y軸刻度
plt.xticks([]) # 去掉x軸刻度
plt.ylabel("height") # 設置y軸標簽
plt.xlabel("width") # 設置x軸標簽
plt.show()# matplotlib繪圖需要數據格式為numpy.array
# pandas.DataFrame轉換為numpy.array
a = pandas.DataFrame(np.random.rand(4, 5), columns=list('abcde'))
a_asarray = a.values# np.matrix轉換為numpy.array
b = np.matrix([[1, 2], [3, 4]])
b_asarray = np.asarray(b)# 基本上有兩種方法可以使用matplotlib:
# - 顯式創建數字和軸,并在它們上調用方法(“面向對象(OO)樣式”)。
# - 依靠Pyplot自動創建和管理數字和軸,并使用Pyplot函數進行繪圖。
x = np.linspace(0, 2, 100)
# 創建圖表
fig, ax = plt.subplots() # 創建圖表和軸
ax.plot(x, x, label='linear') # 在軸上繪制一些數據
ax.plot(x, x ** 2, label='quadratic') # 在軸上繪制更多的數據
ax.plot(x, x ** 3, label='cubic') # 在軸上繪制更多的數據
ax.set_xlabel('x label') # 添加x軸標簽
ax.set_ylabel('y label') # 添加y軸標簽
ax.set_title("Simple Plot") # 添加圖表標題
ax.legend() # 添加圖例解釋
plt.show()x = np.linspace(0, 2, 100)
plt.plot(x, x, label='linear') # 在軸上顯式繪制數據
plt.plot(x, x ** 2, label='quadratic') # 在軸上顯式繪制數據
plt.plot(x, x ** 3, label='cubic') # 在軸上顯式繪制數據
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend()
plt.show()
- matplotlib繪制需要數據格式numpy.array,所以pandas.DataFrame,np.matrix均需要調整為numpy.array就可繪制
# matplotlib繪圖需要數據格式為numpy.array
# pandas.DataFrame轉換為numpy.array
a = pandas.DataFrame(np.random.rand(4, 5), columns=list('abcde'))
a_asarray = a.values# np.matrix轉換為numpy.array
b = np.matrix([[1, 2], [3, 4]])
b_asarray = np.asarray(b)
2. 繪圖輔助函數方法,繪制多個圖(隨機點繪制多個子圖,點狀、x狀等)
import matplotlib.pyplot as plt
import numpy as np# 當需要進行大量的繪圖時,可以編寫一個公共方法: 繪圖輔助函數
# ax:軸
# data1:x軸data
# data2:y軸data
# param_dict:傳遞到ax.plot的參數
# out:返回值,返回繪制好的圖表
def my_plotter(ax, data1, data2, param_dict):out = ax.plot(data1, data2, **param_dict)return out# 一個子圖
data1, data2, data3, data4 = np.random.randn(4, 100)
fig, ax = plt.subplots(1, 1) # 中間的逗號可有可無
out = my_plotter(ax, data1, data2, {'marker': 'x'})
plt.show()# 倆個子圖
fig, (ax1, ax2) = plt.subplots(1, 2)
my_plotter(ax1, data1, data2, {'marker': 'x'})
my_plotter(ax2, data3, data4, {'marker': 'o'})
plt.show()
3. 可交互式繪圖(一圖單線關閉新展現一圖,及一圖多線)
# 一圖單線關閉展現另一個圖,一圖多線
import matplotlib.pyplot as plt
import numpy as np# 可交互式繪圖
plt.ioff()
for i in range(3):plt.plot(np.random.rand(10))plt.show() # 僅當第一個圖關閉,第二個圖出現# 可交互式繪圖
plt.ioff()
for i in range(3):plt.plot(np.random.rand(10))
plt.show()
4. 3種方法簡化加速渲染圖
- mpl.rcParams[‘path.simplify_threshold’] = 1.0 # 可顯著加快渲染
- mpl.rcParams[‘agg.path.chunksize’] = 10000 # 可顯著加快渲染
- import matplotlib.style as mplstyle
mplstyle.use(‘fast’) # 優化以加速渲染速度
# 線段簡化示例
# 提升繪制效率,簡化曲線 RCParams [“path.simplify_threshold”](默認值:0.111111111111)控制簡化了多少線段;更高的閾值導致更快的渲染。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl# 初始化圖表數據
y = np.random.rand(100000)
# print(y.shape)
y[50000:] *= 2
# print(y.shape)
# 類似于np.logspace 生成對數數組,指定了起始及返回值
y[np.geomspace(10, 50000, 400).astype(int)] = -1
mpl.rcParams['path.simplify'] = Trueprint(np.geomspace(10, 50000, 400).astype(int).shape)
print(np.geomspace(10, 50000, 400).astype(int))mpl.rcParams['path.simplify_threshold'] = 0.0
plt.plot(y)
plt.show()mpl.rcParams['path.simplify_threshold'] = 1.0 # 可顯著加快渲染
plt.plot(y)
plt.show()# 將線分割成更小的塊
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['path.simplify_threshold'] = 1.0# 初始化要繪制的數據
y = np.random.rand(100000)
y[50000:] *= 2
y[np.geomspace(10, 50000, 400).astype(int)] = -1
mpl.rcParams['path.simplify'] = Truempl.rcParams['agg.path.chunksize'] = 0
plt.plot(y)
plt.show()mpl.rcParams['agg.path.chunksize'] = 10000 # 可顯著加快渲染
plt.plot(y)
plt.show()# 將線分割成更小的塊
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import matplotlib.style as mplstyle
mplstyle.use('fast') # 優化以加速渲染速度
mplstyle.use(['dark_background', 'ggplot', 'fast'])
mpl.rcParams['path.simplify_threshold'] = 1.0# 初始化要繪制的數據
y = np.random.rand(100000)
y[50000:] *= 2
y[np.geomspace(10, 50000, 400).astype(int)] = -1
mpl.rcParams['path.simplify'] = Truempl.rcParams['agg.path.chunksize'] = 0
plt.plot(y)
plt.show()mpl.rcParams['agg.path.chunksize'] = 10000 # 可顯著加快渲染
plt.plot(y)
plt.show()
參考
- https://matplotlib.org/stable/tutorials/index.html
總結
以上是生活随笔為你收集整理的Matplitlib绘图入门1,这一篇就够了的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV中的对极几何和对极约束
- 下一篇: 详解OpenCV中的Lucas Kana