首页 > 解决方案 > 您可以将 Seaborn 参数应用于使用 matplotlib 创建的 3d 函数热图吗?

问题描述

我需要使用我专门使用 Matplotlib 参数绘制的下图。

import matplotlib.pyplot as plt
import numpy as np

y, x = np.meshgrid(np.linspace(0, 5*10**(-25), 100), np.linspace(0, 5*10**(-9), 100))


def z_collisionfactor (x, y):
    return((((2.9929*10**(-20))+(1.73*10**(-10))*x+((1/4)*x**(2)))*((5.3136*10**(-26))+(y))**(1/2))/((((2.2685*10**(-23))+((1.3113*10**(-13))*x)+(1.8949*10**(-4)*x**(2)))*((5.3136*10**(-26)+y)**(1/2)))+(1.604*10**(-23)*((y)**(1/2)))+((4.9418*10**(-16))*x**(2))))

z = z_collisionfactor (x, y)


z = z[:356, :488]


z_min, z_max = 356, 488


fig, ax = plt.subplots()


c = ax.pcolormesh(x, y, z, cmap='RdBu', vmin=z_min, vmax=z_max)
ax.set_title('Probability of collision for unlike molecules')



ax.set_xlim(left=0, right=3*10**(-9))

ax.set_ylim(bottom=0, top=5*10**(-25))

fig.colorbar(c, ax=ax)

plt.show()

输出看起来像这样: 我的函数图 但是,我需要将两种特色颜色转换为相同的灰色调,以便在黑白打印时可以正确解释图形。所以我尝试使用 Seaborn,但我不知道如何将图形的所有定义属性压缩到一个名为“数据”的巨大变量中。显然,您不能直接将 Seaborn 参数分配给 Matplotlib 图,所以我对下一步该做什么感到困惑。另外:另外,如果能够稍微改变条的中心(这样白色部分的值不同,比如 450,并且取决于其他点距离 450 的距离),那就太好了。 z 轴,它们在灰度上被分配了一个特定的值,无论这些点是向上还是向下,都是相同的。也就是说,470 应该与 430 具有相同的颜色值,因为它们都离 450 20 个单位)。编辑:拜托,我需要一些帮助!!!!!!!谢谢

标签: matplotlibplotgraph3dseaborn

解决方案


推荐阅读