日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Matplitlib绘图入门1,这一篇就够了

發布時間:2023/11/27 生活经验 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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,这一篇就够了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。