如何解决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
颜色图应该使具有较低电离势的元素发生红移,并给予具有较高 IP 的元素蓝移,如下面的颜色条:
我发现他们在 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 举报,一经查实,本站将立刻删除。