Python 平滑的Matplotlib颜色贴图(在中)

Python 平滑的Matplotlib颜色贴图(在中),python,matplotlib,color-mapping,Python,Matplotlib,Color Mapping,我一直在为我的论文绘制四维数据,在3D图形上使用彩色地图,遇到了一个复杂的问题。看起来我使用的colormap方法平均了角点处的值,然后用该值为整个瓷砖上色。如果我有一个更大的分辨率,这将是好的,但我花了大约一个月的时间来运行模拟以获得我当前的数据 有人能提出一个改变这种状况的方法吗?最好不要通过编码我自己的线性插值来增加所有点的分辨率。在这一点上,(对我来说)这可能比它的价值更大 Driven=np.zeros((5,9)) Driver=np.zeros((5,9)) Composition

我一直在为我的论文绘制四维数据,在3D图形上使用彩色地图,遇到了一个复杂的问题。看起来我使用的colormap方法平均了角点处的值,然后用该值为整个瓷砖上色。如果我有一个更大的分辨率,这将是好的,但我花了大约一个月的时间来运行模拟以获得我当前的数据

有人能提出一个改变这种状况的方法吗?最好不要通过编码我自己的线性插值来增加所有点的分辨率。在这一点上,(对我来说)这可能比它的价值更大

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')

欢迎发表意见,谢谢

根据我的经验,
matplotlib
不适合做3D绘图。由于类似的问题,我为此切换到了
mayavi
();它可能已经帮了你(而且看起来很漂亮!)。如果需要,在scipy.interpolate中有方便的插值工具,要“增加”数据密度,请查看它们


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

对于类似的问题,如果你给出一个完整的工作示例,你会得到更好的答案。您缺少
包括
储备数据的定义。你可能想尝试构造一个关于你的问题的最小玩具示例。谢谢,我没有想到mayavi,我以前见过它,但从未尝试过。我将研究这些方法,但我并不热衷于使用插值来找到平滑曲面,而将真实数据添加到该曲面可能需要一段时间才能正确。