我正在制作一个条形图,我希望条形的颜色根据颜色渐变从红色到蓝色变化。我有一个数据框的尺寸,它告诉我每个条形在红蓝色刻度上的位置。我当前的方法是通过在 RGB 红色和蓝色之间进行线性插值来手动将这些值转换为 RGB 颜色,但我想要一种自动方法将我的数值转换为色标。我还需要能够有一个颜色条图例来帮助解释它。
创建条形图并根据数据框中的值设置条形颜色非常简单。颜色图和标准化实例有助于将值转换为颜色,这是可以理解的color
的论证matplotlib.Axes.bar
。然后从创建颜色条ScalarMappable
使用与条形相同的归一化和颜色图。
import matplotlib.pyplot as plt
import matplotlib.colors
import numpy as np; np.random.seed(0)
import pandas as pd
x = np.arange(12)
y = np.random.rand(len(x))*51
c = np.random.rand(len(x))*3+1.5
df = pd.DataFrame({"x":x,"y":y,"c":c})
cmap = plt.cm.rainbow
norm = matplotlib.colors.Normalize(vmin=1.5, vmax=4.5)
fig, ax = plt.subplots()
ax.bar(df.x, df.y, color=cmap(norm(df.c.values)))
ax.set_xticks(df.x)
sm = plt.cm.ScalarMappable(cmap=cmap, norm=norm)
sm.set_array([]) # only needed for matplotlib < 3.1
fig.colorbar(sm)
plt.show()
有关使用带条形图的自定义颜色图,请参阅根据颜色图着色的条形图? https://stackoverflow.com/questions/42656585/barplot-colored-according-a-colormap/42665818#42665818
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)