簡體   English   中英

Python:Matplotlib Surface_plot

[英]Python: Matplotlib Surface_plot

我正在嘗試繪制一個高分辨率的surface_plot,但我也非常喜歡它上面的一些漂亮的網格線。 如果我在同一個參數中使用網格線

ax.plot_surface(x_itp, y_itp, z_itp, rstride=1, cstride=1, facecolors=facecolors, linewidth=0.1)

我得到了很多網格線。 另一方面,如果我將“rstride”和“cstride”設置為更高的值,我的球體將變得丑陋。

然后我試圖粉碎一個

ax.plot_wireframe(x_itp, y_itp, z_itp, rstride=3, cstride=3)

之后,它只是位於彩色球體的頂部..這意味着我可以看到線框的背面,然后是它背后的surface_plot。

有人試過嗎?

另一個選擇是使用“底圖”,它可以創建一個漂亮的網格,但然后我將不得不調整我的彩色表面。

我的情節看起來像這樣: surface_plot

如果我使用更高的“rstride”和“cstride”向地圖添加邊緣,那么它看起來像這樣:

在此輸入圖像描述

代碼:

norm = plt.Normalize()
facecolors = plt.cm.jet(norm(d_itp))

# surface plot 
fig, ax = plt.subplots(1, 1, subplot_kw={'projection':'3d', 'aspect':'equal'})
ax.hold(True)
surf = ax.plot_surface(x_itp, y_itp, z_itp, rstride=4, cstride=4, facecolors=facecolors)
surf.set_edgecolors("black")

我想在球體周圍顯示\\ theta和\\ phi角度..可能相隔30度。

干杯! 莫滕

看起來您可能需要使用底圖。 使用plot_surface(),您可以使用高分辨率繪圖或低分辨率,頂部有良好的網格。 但不是兩個。 我剛剛用等高線圖制作了一個簡單的底圖。 我認為你可以輕松地在它上面應用pcolor。 只是不要繪制大陸和國家邊界。 然后,你有一個很好的球體,可以提供更多的控制。 制作繪圖后,您可以輕松地在其上添加網格。

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np

map = Basemap(projection='ortho',lat_0=45,lon_0=-150) 
map.drawmapboundary(fill_color='aquamarine')
map.drawmeridians(np.arange(0,360,30)) # grid every 30 deg
map.drawparallels(np.arange(-90,90,30))

nlats = 73; nlons = 145; delta = 2.*np.pi/(nlons-1)
lats = (0.5*np.pi-delta*np.indices((nlats,nlons))[0,:,:])
lons = (delta*np.indices((nlats,nlons))[1,:,:])
wave = 0.6*(np.sin(2.*lats)**6*np.cos(4.*lons))
mean = 0.5*np.cos(2.*lats)*((np.sin(2.*lats))**2 + 2.)

x, y = map(lons*180./np.pi, lats*180./np.pi) # projection from lat, lon to sphere
cs = map.contour(x,y,wave+mean,15,linewidths=1.5) # contour data. You can use pcolor() for your project
plt.title('test1')
plt.show()

使用底圖在球體上的等高線圖

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM