Python實現(xiàn)在不同坐標系中繪制曲線
平面直角坐標系
回顧我們的數(shù)據(jù)可視化的學習歷程,其實始于笛卡爾坐標系的創(chuàng)建,并由此建立了數(shù)與形的對應關系。在笛卡爾坐標系中隨便點上一點,這個點天生具備坐標,從而與數(shù)對(x,y)完成映射,這就是最基礎的散點圖。將點連在一起,便是折線圖。
但在matplotlib中,折線圖反而比散點圖更加基礎,因為散點圖至少需要兩組一一對應的X和Y坐標,而折線圖在只接受一組數(shù)據(jù)的情況下,便會默認自然數(shù)列為x坐標,從而繪圖過程更加遍歷
import numpy as np import matplotlib.pyplot as plt ys = np.arange(100)**2 plt.plot(ys) plt.show()

空間直角坐標系
將曲線繪制在三維坐標系中的方法有兩個,盡管從思維的角度出發(fā),直接繪制比較方便,但從matplotlib的繪圖邏輯來說,最簡單的方案是把二維坐標系嵌入到三維坐標系中,換言之,為其指定一個額外的軸。
xs = np.linspace(0, 1, 100)
ys = np.sin(xs * 2 * np.pi) / 2 + 0.5
fig = plt.figure()
zs = ['x', 'y', 'z']
for i, z in enumerate(zs, 1):
ax = fig.add_subplot(1,3,i, projection='3d')
ax.plot(xs, ys, zs=0, zdir=z)
ax.set_zlim(0,1)
ax.set_xlim(0,1)
ax.set_ylim(0,1)
plt.show()在上面的代碼中,調用的仍舊是plot,但是用zdir參數(shù)指定了z軸方向,當為z軸設置不同的方向時,曲線所嵌入到的三維直角坐標系的坐標平面是不同的。

很顯然,這是個偽3D曲線,但plot函數(shù)是有實力繪制真正的三維曲線的,無非多一個坐標軸而已
xs = np.linspace(0, 5, 100) ys = np.sin(xs * 2 * np.pi) / 2 + 0.5 zs = np.cos(xs * 2 * np.pi) / 2 + 0.5 ax = plt.subplot(projection='3d') ax.plot(xs, ys, zs) plt.show()
效果如下

極坐標
極坐標的建立與三維直角坐標系的建立是相同的,均以指定projection的形式實現(xiàn)
r = np.arange(0, 2, 0.01) theta = 2 * np.pi * r ax = plt.subplot(projection='polar') ax.plot(theta, r) plt.show()
繪圖結果如下

在極坐標中繪圖時,plot函數(shù)保留了默認自變量的功能,試驗一下就清楚了
ax = plt.subplot(projection='polar') ax.plot(r) plt.show()
下圖中,由于默認 θ \theta θ的增長步長為1,這對于每圈 2 π 2\pi 2π的極坐標來說是非常大的一個量,故而圖形在繪制過程中出現(xiàn)了不可避免的曲折。

但matplotlib并沒有封裝一個拿來就能用的柱坐標或者球坐標,除非自己在三維直角坐標系中實現(xiàn)一個。
地理坐標
projection的含義是投影,除了3D坐標和極坐標之外,還支持多種地理坐標,例如漢邁爾-埃托夫投影等,下面就列舉幾個不同的地理坐標,并在其中進行
projs = ['aitoff', 'hammer', 'lambert', 'mollweide']
fig = plt.figure()
xs = ys = np.arange(-2,2,0.01)
for i, p in enumerate(projs, 1):
ax = fig.add_subplot(2,2,i,projection=p)
ax.plot(xs, ys)
plt.title(p)
plt.grid()
plt.show()
到此這篇關于Python實現(xiàn)在不同坐標系中繪制曲線的文章就介紹到這了,更多相關Python曲線內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python3 venv搭建輕量級虛擬環(huán)境的步驟(圖文)
這篇文章主要介紹了Python3 venv搭建輕量級虛擬環(huán)境的步驟(圖文),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-08-08
Python strip lstrip rstrip使用方法
Python中的strip用于去除字符串的首位字符,同理,lstrip用于去除左邊的字符,rstrip用于去除右邊的字符。這三個函數(shù)都可傳入一個參數(shù),指定要去除的首尾字符。2008-09-09

