用颜色图图例绘制条形图

时间:2020-10-19 16:18:25

标签: python matplotlib bar-chart legend colormap

请考虑以下内容:

import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np

y = np.array([1, 4, 3, 2, 7, 11])
colors = cm.hsv(y / float(max(y)))
plot = plt.scatter(y, y, c = y, cmap = 'hsv')
plt.clf()
plt.colorbar(plot)
plt.bar(range(len(y)), y, color = colors)
plt.show()

enter image description here

我想对图例进行颜色映射,使其出现在图表的右上方(当然要小得多)。由于色彩图与实际的条形有些冲突,此刻我的图像显得有些笨拙。

谢谢。

1 个答案:

答案 0 :(得分:0)

跟随this answer

import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
from mpl_toolkits.axes_grid1.inset_locator import inset_axes

y = np.array([1, 4, 3, 2, 7, 11])
colors = cm.hsv(y / float(max(y)))

fig, ax = plt.subplots()
plot = ax.scatter(y, y, c = y, cmap = 'hsv')
plt.cla()
ax.bar(range(len(y)), y, color = colors)

cbaxes = inset_axes(ax, width="30%", height="3%", loc=2)
plt.colorbar(plot, cax=cbaxes, orientation='horizontal', ticks=[0,2,4,6,8,10])

我使用plt.subplots来轻松引用轴(ax)。您可以通过编辑最后两行来移动颜色条并更改其大小(例如,更改loc可以设置颜色条位于哪个角)。

enter image description here