Python matplotlib:为颜色地图添加图例

3

我对matplotlib不熟悉,想要重现像下面这样的图形,它是一个对数-对数图:

enter image description here

我知道我必须使用colormap根据我的x和y值创建这样的输出。但我想不出如何添加图例,以便能够动态计算颜色映射变量(例如这里称为“Degree”)的值。目前我已经为样本图形获得了以下结果:

from matplotlib import pyplot as plt

x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [125, 32, 54, 253, 67, 87, 233, 56, 67]

color = [str(item/255.) for item in y]

plt.scatter(x, y, s=500, c=color)

plt.show()

非常感谢您的帮助。


1
@Sajjan 给了你一个完整的答案,你所要求的是 plt.colorbar() - Greg K.
1个回答

4
您可以为您的绘图分配适当的色彩映射,例如灰度色彩映射:
x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
y = [125, 32, 54, 253, 67, 87, 233, 56, 67]

color = [item / 255.0 for item in y]
grayscale_map = plt.get_cmap('gray')

plt.figure()
plt.scatter(x, y, s = 500, c = color, cmap = grayscale_map)
plt.colorbar()
plt.show()

enter image description here

请注意,我将您的color列表更改为浮点数列表,这些浮点数将(可能)在0到1之间取值。

是否可以在右侧的颜色条旁边添加标签?我希望只在极端值处进行标记,并且最好附有一些文本说明。例如,标签“0”将被替换为“$x=0$”,标签“1”将被替换为“$x=1$”。 - michalOut
我已经找到了解决方案,所以对于任何正在搜索的人,请访问这个答案。通过在“cmaps”中添加或删除元素,可以调整不同输入的数量。 - michalOut
您可以设置色条的刻度标签,就像这个mpl演示所展示的一样:https://matplotlib.org/stable/gallery/ticks_and_spines/colorbar_tick_labelling_demo.html - jme

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接