平滑的Matplotlib色彩映射

时间:2013-10-15 13:04:44

标签: python matplotlib color-mapping

我一直在使用3D图表上的色彩图为我的论文绘制四维数据并遇到并发症。看起来我正在使用的色彩映射方法对角点处的值进行平均,然后按该值为整个图块着色。如果我有更高的分辨率,这将没问题,但我花了大约一个月的时间来运行模拟来获取我当前的数据。

有人可以建议改变这个吗?优选地,不是通过编码我自己的所有点的线性插值来增加分辨率。对于我来说,这可能比它的价值更多(

Driven=np.zeros((5,9))
Driver=np.zeros((5,9))
Compositions=np.zeros((5,9))
Durations=np.zeros((5,9))
N=np.zeros((5,9))
for i in range(0,5):
    for j in range(0,9):
        Driven[i,j]=ReservoirData[i][1][j]
        Compositions[i,j]=ReservoirData[i][2][j]
        Driver[i,j]=float(ReservoirData[i][0][0][:-3])
        Durations[i,j]=ReservoirData[i][3][j]
maxi=Durations.max()
mini=Durations.min()
for i in range(0,5):
    for j in range(0,9):
        N[i,j]=(Durations[i,j]-mini)/(maxi-mini)

fig = plt.figure() 
ax = fig.gca(projection='3d')

#Important Stuff    Start----------------------------------------------------

surf = ax.plot_surface(Driven,Driver,Compositions, facecolors=cm.jet(N), rstride=1, cstride=1, antialiased=True)
m = cm.ScalarMappable(cmap=cm.jet)

#Important Stuff End---------------------------------------------------------

m.set_array(Durations)
cbar=plt.colorbar(m, shrink=0.8)
cbar.set_label('Nominal Duration')
ax.set_ylabel('Driver Pressure, kPa')
ax.set_xlabel('Compositions, %He')
ax.set_zlabel('Driven Pressure, kPa')
plt.title('Three Dimensional Representation of Tailored Conditions for RS at 9.2MPa')
fig.set_size_inches(14,8)
plt.savefig('RS9.2.png')

enter image description here 欢迎任何意见,谢谢!

1 个答案:

答案 0 :(得分:1)

根据我的经验,matplotlib可以说是不适合做3D图。由于这样的问题,我为此目的切换到mayavilink);它可能已经帮助你了(它看起来很漂亮!)。如果需要,scipy.interpolate中有一些方便的插值工具,可以“增加”您的数据密度,请查看here

为了清晰起见,我总是在插值曲面上标记实际测量数据(仅2D);这对你来说也是可行的。