微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

3d 条形图的颜色图,其中颜色相对于独立值

如何解决3d 条形图的颜色图,其中颜色相对于独立值

我想让我的颜色条随每个元素而变化,并在下面的数据集中表示电离 #:

   Ionization #       Name  Nebulizer 1  Nebulizer 2  Nebulizer 3
0         4.341  Potassium      27.0923      18.5475      25.2555
1         5.139     sodium      23.1222      21.1542      20.5644
2         5.212     Barium       0.1975       0.0721       0.1665
3         5.986  Aluminium       5.0517       3.9544       0.3125
4         6.108    Thalium       0.1484       0.3125       0.0154

enter image description here

颜色图应该使具有较低电离势的元素发生红移,并给予具有较高 IP 的元素蓝移,如下面的颜色条:

enter image description here

我发现他们在 2d 中执行此操作的问题,但我在 3d 中无法执行此操作。我尝试调整 This stack overflow question 中给出的代码,但没有取得多大成功。这是我现在所拥有的,它既可怕又丑陋,并且不起作用。我无法让 rgba 获得每个元素的单独值。此代码只是使每个条形都具有相同的颜色。

macro_df = df.loc[df['Nebulizer 1'] + df['Nebulizer 2'] + df['Nebulizer 3'] >= 3]
ion_grid = []
ion_num = macro_df['Ionization #']
for i in ion_num:
    ion_grid.append(i)
    ion_grid.append(i)
    ion_grid.append(i)
col = cm.jet(np.random.rand(ion_grid.shape[0],ion_grid.shape[1]))
ax1.bar3d(xpos_mac,ypos_mac,zpos_mac,dx,dy,dz_macro,color=rgba)

最后,我想包括我一直用于这个问题的可重现数据框。

df = pd.DataFrame({'Ionization #': [4.341,5.139,5.212,5.986,6.108],'Name': ['Potassium','sodium','Barium','Aluminium','Thalium'],'Nebulizer 1': [27.0923,23.1222,0.1975,5.0517,0.1484],'Nebulizer 2': [18.5475,21.1542,0.0721,3.9544,0.3125],'Nebulizer 3': [25.2555,20.5644,0.1665,0.3125,0.0154]})

如果有帮助,我可以提供我的代码

解决方法

This link 是我找到如何找到我的数据颜色的地方。 我摆脱了'col'变量行并用

替换了该行
rgba_macro = [cmap((k-3.89)/24.59) for k in ion_grid_macro]

下面是颜色条的代码:

sm = ScalarMappable(cmap=my_cmap,norm=plt.Normalize(min,maxx))
sm.set_array([])
cbar = plt.colorbar(sm,shrink=0.5)
cbar.set_label('Ionization Potential (eV)',rotation=270,labelpad=15)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。