我正在使用下面的代碼生成三維曲面圖。我希望顏色代表半徑的值。如何繪製相應的顏色條?在Python中的顏色條中映射顏色
我相信問題在於我在製作曲面圖時使用了facecolors
。所以我需要根據這個面部顏色製作色條。
據我所知,我必須將這些顏色映射到顏色條,這只是我不知道如何。
import numpy as np
import matplotlib.pyplot as plt
def sph2cart(theta, phi, radius):
x_cart = radius * np.sin(theta) * np.cos(phi)
y_cart = radius * np.sin(theta) * np.sin(phi)
z_cart = radius * np.cos(theta)
return np.array([x_cart, y_cart, z_cart])
def antenna_plot_3D(mod_F, T, P):
[x, y, z] = sph2cart(T, P, mod_F)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection='3d')
p_surf = ax.plot_surface(x, y, z, rstride=1, cstride=1,
linewidth=0, antialiased=True,
facecolors=cm.jet(np.sqrt(x*x + y*y + z*z)))
ax.set_zlabel('Z axis', fontsize=15)
ax.set_xlabel('X axis', fontsize=15)
ax.set_ylabel('Y axis', fontsize=15)
plt.savefig('3d_pattern.png')
plt.show()
x = 300
t = np.linspace(0, np.pi, num=x)
p = np.linspace(0,2*np.pi, num=x)
[T,P] = np.meshgrid(t,p)
mod_F = np.sin(T) * np.cos(P)
antenna_plot_3D(mod_F, T, P)
我希望表面被着色,顏色應表示半徑。
'fig.colorbar()' – 2014-11-14 17:52:40
我已經試過了,它提供了以下錯誤。 raise RuntimeError('No mappable was found for use for colorbar' RuntimeError:沒有可映射被發現用於創建色條,首先定義一個可映射的圖像(帶有imshow)或輪廓集(帶有contourf) – Devansh 2014-11-14 17:58:06
I '不會混淆所有這一切:閱讀此:http://stackoverflow.com/help/mcve – 2014-11-14 18:10:36