contourplot函數使用詳解

一、contourplot怎麼調參數範圍

import numpy as np
import matplotlib.pyplot as plt

#生成數據
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

#調整參數範圍
plt.contourf(X, Y, Z, levels=np.linspace(-1,1,20), cmap=plt.cm.hot)
C = plt.contour(X, Y, Z, 10, colors='black', linewidth=.5) 
plt.clabel(C, inline=True, fontsize=10)
plt.show()

contourplot函數用於繪製二元函數的等高線圖。首先需要準備一組數據,可以使用numpy生成。使用plt.contourf()來繪製等高線圖的填充顏色,其中levels參數用於設置顏色分區層數,cmap用於選擇配色方案。plt.contour()用於繪製等高線輪廓,其中colors參數用於選擇輪廓線顏色,linewidth參數用於設置輪廓線粗細。plt.clabel()用於繪製輪廓線標籤,其中inline參數用於控制標籤是否放置在線內部,fontsize用於控制標籤的字體大小。

二、contourplot函數

import numpy as np
import matplotlib.pyplot as plt

#生成數據
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

#繪製等高線圖
plt.contour(X, Y, Z, 10, colors='black')
plt.show()

可以看到,contourplot函數繪製的是等高線輪廓,由於沒有填充顏色,圖像較為簡潔。

三、contourplot比例

import numpy as np
import matplotlib.pyplot as plt

#生成數據
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

#不等比例繪圖
fig, ax = plt.subplots()
a = .8
fig.set_size_inches(a*6.4, a*4.8)
ax.contourf(X, Y, Z, levels=np.linspace(-1,1,20), cmap=plt.cm.hot)
C = ax.contour(X, Y, Z, 10, colors='black', linewidth=.5) 
ax.clabel(C, inline=True, fontsize=10)
plt.show()

可以使用fig.set_size_inches()函數自定義圖片比例,其中參數a為縮放比例。為了保持等比例繪圖,x軸的長度應該為y軸長度的1.33倍。

四、contourplot3d

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

#生成數據
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

#繪製3D圖像
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(X, Y, Z, cmap=plt.cm.hot)
plt.show()

以上是contourplot函數繪製三維圖像的基本方法,通過設置參數projection=’3d’來告訴Python需要繪製3D圖像,然後使用ax.plot_surface()函數來繪製3D圖像。

五、contourplot3D函數

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

#生成數據
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

#繪製3D等高線圖
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.contour(X, Y, Z, 10, cmap=plt.cm.hot)
plt.show()

contourplot3D函數使用方法類似於contourplot函數,只不過是用於繪製3D等高線圖而不是3D圖像。其中,levels參數用於設置顏色分區層數,cmap用於選擇配色方案。

六、contourplot和plot區別

import numpy as np
import matplotlib.pyplot as plt

#生成數據
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

#繪製等高線圖和曲面圖
fig = plt.figure()
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122, projection='3d')

ax1.contour(X, Y, Z, 10, colors='black')
ax2.plot_surface(X, Y, Z, cmap=plt.cm.hot)

plt.show()

可以看到,contourplot和plot的區別在於contourplot繪製出的是等值線圖,plot則直接繪製出了曲面。在上方示例中,使用contourplot和plot繪製出了等高線圖和曲面圖。

七、contourplot函數有地方畫不出來

使用一些特殊函數,比如圓錐線(z^2=x^2+y^2)這種函數,contourplot函數就無法進行繪製,因為這些函數出現奇點。這種情況下,需要使用contourplot3D函數。

八、contourplot3D函數畫奇點

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

#生成數據
x = np.linspace(-1, 1, 100)
y = np.linspace(-1, 1, 100)
X, Y = np.meshgrid(x, y)
Z = X ** 2 + Y ** 2

#繪製圖像
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot_surface(X, Y, Z, cmap=plt.cm.hot)
plt.show()

在contourplot3D函數中無法繪製出奇點,需要使用plot_surface()函數進行曲面繪製,該函數應該是基於顏色填充的方法繪圖,因此不會出現奇點。

九、contourplot函數局部不能畫

在contourplot函數中一些函數局部變化較為複雜,造成函數在局部無法使用等高線的方法表示。這種時候,可以考慮將總體分為兩個部分,一部分進行等高線表示,一部分進行平面表示。

import numpy as np
import matplotlib.pyplot as plt

#生成數據
x = np.linspace(-1, 1, 1000)
y = np.linspace(-1, 1, 1000)
X, Y = np.meshgrid(x, y)
Z = X ** 2 - Y ** 2

#繪製圖像
fig = plt.figure()
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122)

#等高線表示
ax1.contour(X, Y, Z, 5, colors='black')

#平面表示
x_subs = np.linspace(-1, 1, 100)
y_subs = np.linspace(-.01, .01, 100)
X_subs, Y_subs = np.meshgrid(x_subs, y_subs)
ax2.plot_surface(X_subs, Y_subs, X_subs ** 2 - Y_subs ** 2, cmap=plt.cm.hot)

plt.show()

如上圖所示,將函數分別進行等高線和平面表示,可以獲得更加精細的圖像,細節表現會更好。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/154795.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-16 14:13
下一篇 2024-11-16 14:14

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字元串操作中,capitalize函數常常被用到,這個函數可以使字元串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • 單片機列印函數

    單片機列印是指通過串口或並口將一些數據列印到終端設備上。在單片機應用中,列印非常重要。正確的列印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的列印數據可以幫助我們快速…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29
  • Python函數名稱相同參數不同:多態

    Python是一門面向對象的編程語言,它強烈支持多態性 一、什麼是多態多態是面向對象三大特性中的一種,它指的是:相同的函數名稱可以有不同的實現方式。也就是說,不同的對象調用同名方法…

    編程 2025-04-29
  • 分段函數Python

    本文將從以下幾個方面詳細闡述Python中的分段函數,包括函數基本定義、調用示例、圖像繪製、函數優化和應用實例。 一、函數基本定義 分段函數又稱為條件函數,指一條直線段或曲線段,由…

    編程 2025-04-29

發表回復

登錄後才能評論