欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解matplotlib技巧之縮放和投影

 更新時間:2024年01月11日 08:47:23   作者:databook  
我們在使用matplotlib繪制圖形時,有兩個重要的技巧:一種是?Scale(縮放),一種是Projection(投影),縮放和投影在matplotlib繪圖中起著至關(guān)重要的作用,它們幫助我們更好地展示和理解數(shù)據(jù),本文將詳細的給大家介紹這兩個技巧,需要的朋友可以參考下

引言

我們在使用matplotlib繪制圖形時,有兩個重要的技巧:一種是 Scale(縮放),一種是Projection(投影)。

一般來說,Scale是對數(shù)據(jù)的一個維度進行變換,適當(dāng)?shù)目s放可以改善圖表的視覺效果,使其更加美觀和易讀。
Projection則是對2個或者2個以上的維度進行變換,一般是將多維數(shù)據(jù)映射到二維或三維空間中。

縮放投影matplotlib繪圖中起著至關(guān)重要的作用,它們幫助我們更好地展示和理解數(shù)據(jù)。

1. Scale - 縮放

縮放是指調(diào)整圖形的大小,使其適應(yīng)不同的尺寸或比例。
在可視化時,縮放通常用于確保數(shù)據(jù)點在圖表上正確表示,尤其是在處理大量數(shù)據(jù)或數(shù)據(jù)點之間存在顯著比例差異時。

matplotlib支持多種縮放方式,比如常見的線性縮放,對數(shù)縮放和自定義縮放。

1.1. 線性縮放

線性縮放是默認的縮放方式,數(shù)據(jù)的值是通過線性變換之后顯示在圖形的。

我們先構(gòu)造一個X軸和Y軸比例非線性的圖形(y=2^x),比如:

import matplotlib.pyplot as plt
import math

x = list(range(1, 11))
y = [math.pow(2, a) for a in x]

fig = plt.figure(figsize=(6, 6))
ax = plt.subplot(1, 1, 1, aspect=1, xlim=[1, 10])
ax.plot(x, y, marker="o")

plt.show()

顯示圖形如下:

按照1:1的比例,圖形幾乎無法查看,改成線性縮放之后:

import matplotlib.pyplot as plt
import math

x = list(range(1, 11))
y = [math.pow(2, a) for a in x]

fig = plt.figure(figsize=(6, 6))
ax = plt.subplot(1, 1, 1, xlim=[1, 10])
ax.set_yscale("linear")  # 這里設(shè)置了線性縮放
ax.plot(x, y, marker="o")

plt.show()

線性縮放之后,X:Y的比例自動調(diào)整為1:200。

1.2. 對數(shù)縮放

上面的例子中,X 和 Y 的關(guān)系是指數(shù)關(guān)系,所以,我們改成對數(shù)縮放,
看看和線性縮放的顯示有什么不同。
只需修改一行代碼:

ax.set_yscale("log")  # 設(shè)置對數(shù)縮放

顯示效果變成如下這樣:

1.3. 自定義縮放

除了使用matplotlib為我們內(nèi)置的縮放函數(shù),我們也可以自定義縮放函數(shù)。
定義縮放函數(shù),就是定義2個的函數(shù):

import numpy as np

def forward(x):
    return np.power(2, x)

def inverse(x):
    return np.log2(x)

然后用我們自定義的縮放函數(shù)來再次試試 y=2^x的圖形。

x = list(range(1, 11))
y = [math.pow(2, a) for a in x]

fig = plt.figure(figsize=(6, 6))
ax = plt.subplot(1, 1, 1, xlim=[1, 10])
ax.set_xscale('function', functions=(forward, inverse))
ax.plot(x, y, marker="o")

plt.show()

顯示的效果如下:

2. Projection - 投影

投影是多個維度的變換,在數(shù)據(jù)可視化中,通常用于展示高維數(shù)據(jù)集的低維表示,幫助人們理解數(shù)據(jù)的結(jié)構(gòu)和模式。

2.1. 坐標(biāo)系轉(zhuǎn)換

投影的一個常用的應(yīng)用場景是不同坐標(biāo)系之間的轉(zhuǎn)換,matplotlib繪圖時,常用的坐標(biāo)系是笛卡爾坐標(biāo)系極坐標(biāo)系。
笛卡爾坐標(biāo)系在幾何、物理學(xué)和計算機圖形學(xué)等領(lǐng)域中廣泛應(yīng)用,因為它可以方便地描述平面上的任意一點。
然而,對于描述圓形和對稱圖形,極坐標(biāo)系可能更為簡潔。

下面的示例中,就是同樣的一份數(shù)據(jù)投影在兩種坐標(biāo)系下情況。

x = list(range(1, 11))
y = x

fig = plt.figure(figsize=(12,6))
ax1 = plt.subplot(1,2,1, aspect=1, xlim=[1,10], ylim=[1, 10], projection='polar')
ax1.plot(x, y, marker="o")

ax2 = plt.subplot(1,2,2, aspect=1, xlim=[1,10], ylim=[1, 10])
ax2.plot(x, y, marker="o")

plt.show()

2.2. 3D 投影

投影另一個重要的作用就是轉(zhuǎn)換數(shù)據(jù)的維度,良好的投影應(yīng)該能夠保留數(shù)據(jù)的重要特征,同時減少信息的損失。
下面的示例來自matplotlib的官方文檔,
它把三維的圖形的任意兩個維度投影到不同的平面上,可以更好的觀察三維的圖形的特性。

from mpl_toolkits.mplot3d import axes3d

ax = plt.figure().add_subplot(projection="3d")
X, Y, Z = axes3d.get_test_data(0.05)

ax.plot_surface(X, Y, Z, edgecolor="royalblue", lw=0.5, rstride=8, cstride=8, alpha=0.3)

ax.contour(X, Y, Z, zdir="z", offset=-100, cmap="coolwarm")
ax.contour(X, Y, Z, zdir="x", offset=-40, cmap="coolwarm")
ax.contour(X, Y, Z, zdir="y", offset=40, cmap="coolwarm")

ax.set(
    xlim=(-40, 40), ylim=(-40, 40), zlim=(-100, 100), xlabel="X", ylabel="Y", zlabel="Z"
)

plt.show()

3. 總結(jié)

我們平時繪制2D圖形比較多,2D圖形只有2個維度,所以一般用縮放(Scale)變換就足夠了。
但是在 3D 圖形的場景中,投影就會用的多一些。

此外,和地理信息結(jié)合展示數(shù)據(jù)的時候,投影也會用的比較多。
因為數(shù)據(jù)對應(yīng)到經(jīng)緯度上至少是2個維度的同時變換(如果地理信息中包含海拔高度信息,則是3個維度的變換)

以上就是詳解matplotlib技巧縮放和投影的詳細內(nèi)容,更多關(guān)于matplotlib縮放和投影的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python代碼連接到 Chat GPT API的方法

    Python代碼連接到 Chat GPT API的方法

    Chat GPT 由于其獨特、近乎準(zhǔn)確且類似人類的響應(yīng),如今在互聯(lián)網(wǎng)上引起了過多的討論,本文討論如何通過 Python 代碼連接到 Chat GPT API,感興趣的朋友一起看看吧
    2023-02-02
  • Python實現(xiàn)輸入二叉樹的先序和中序遍歷,再輸出后序遍歷操作示例

    Python實現(xiàn)輸入二叉樹的先序和中序遍歷,再輸出后序遍歷操作示例

    這篇文章主要介紹了Python實現(xiàn)輸入二叉樹的先序和中序遍歷,再輸出后序遍歷操作,涉及Python基于先序遍歷和中序遍歷構(gòu)造二叉樹,再后序遍歷輸出相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • pandas數(shù)據(jù)處理之繪圖的實現(xiàn)

    pandas數(shù)據(jù)處理之繪圖的實現(xiàn)

    這篇文章主要介紹了pandas數(shù)據(jù)處理之繪圖的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Django使用 Bootstrap 樣式修改書籍列表過程解析

    Django使用 Bootstrap 樣式修改書籍列表過程解析

    這篇文章主要介紹了Django使用 Bootstrap 樣式修改書籍列表過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • Python random庫使用方法及異常處理方案

    Python random庫使用方法及異常處理方案

    這篇文章主要介紹了python random庫使用方法及異常處理,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Python網(wǎng)絡(luò)編程之xmlrpc模塊

    Python網(wǎng)絡(luò)編程之xmlrpc模塊

    這篇文章介紹了Python網(wǎng)絡(luò)編程之xmlrpc模塊,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • Django之PopUp的具體實現(xiàn)方法

    Django之PopUp的具體實現(xiàn)方法

    今天小編就為大家分享一篇Django之PopUp的具體實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python+OpenCV繪制灰度直方圖詳解

    Python+OpenCV繪制灰度直方圖詳解

    一幅圖像由不同灰度值的像素組成,圖像中灰度的分布情況是該圖像的一個重要特征。圖像的灰度直方圖就描述了圖像中灰度分布情況。本文將利用Python和OpenCV繪制灰度直方圖,需要的可以參考一下
    2022-03-03
  • python 動態(tài)調(diào)用函數(shù)實例解析

    python 動態(tài)調(diào)用函數(shù)實例解析

    這篇文章主要介紹了python 動態(tài)調(diào)用函數(shù)實例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • 解決Python一行輸出不顯示的問題

    解決Python一行輸出不顯示的問題

    今天小編就為大家分享一篇解決Python一行輸出不顯示的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12

最新評論