为什么我的表面会在颜色方面将颜色从第1个变为第二个?
以下是我的情节代码:
def Plots3d(U):
fig = plt.figure()
ax = fig.gca(projection='3d')
y, x = U.shape
Y = np.arange(0, y, 1)
X = np.arange(0, x, 1)
Y, X = np.meshgrid(Y, X)
Z = U[Y, X]
ax.plot_surface(X, Y, Z, rstride=1, cstride=1,
linewidth=0.7, antialiased=False, cmap = cm.summer)
plt.xlabel('Stock Price Nodes')
plt.ylabel('Timesteps')
plt.title('Analytical solution surface for 0 <= t <= 2')
plt.show()
答案 0 :(得分:1)
这看起来像一个分辨率问题:保存的图中的线条太厚,在保存时会占据图形,将其变为黑色。使用plt.show
生成的已保存图形和图形的默认分辨率可能与matplotlibrc
文件不同。
您可以尝试提高分辨率(每平方英寸点数,或dpi
)或降低线宽。
为您提供一些可能的选择:
使用rcParams
from matplotlib import rcParams
# this changes the dpi of figures saved from plt.show()
rcParams['figure.dpi'] = 300
# this changes the dpi of figures saved from plt.savefig()
rcParams['savefig.dpi'] = 300
在savefig期间增加dpi
如果您不想使用rcParams,可以在保存数字时增加dpi:
plt.savefig('myfigure.png', dpi=300)
减少线宽
或者,您可以尝试减小曲面图的线宽
ax.plot_surface(X, Y, Z, rstride=1, cstride=1,
linewidth=0.3, antialiased=False, cmap = cm.summer)