当前位置: 首页 > 面试题库 >

如何在matplotlib中将图例添加到imshow()

白博赡
2023-03-14
问题内容

我在用 matplotlib

plot()或中bar(),如果我们向其添加标签,则可以轻松放置图例。但是如果是contourf()imshow()

我知道有一个colorbar()可以显示颜色范围的颜色,但是并不满意。我想要一个带有名称(标签)的

我能想到的是,向矩阵中的每个元素添加标签,然后,尝试legend(),以查看其是否有效,但是如何向元素添加标签(如值)?

就我而言,原始数据如下:

1,2,3,3,4
2,3,4,4,5
1,1,1,2,2

例如,1代表“草”,2代表“沙”,3代表“山” …依此类推。imshow()非常适合我的情况,但没有图例。

我的问题是:

  1. 有没有可以自动添加图例的函数,例如,在我的情况下,我只需要这样做:someFunction(’grass’,’sand’,…)

  2. 如果没有,如何将标签添加到矩阵中的每个值。例如,在矩阵“草”中标记所有1,在矩阵“沙”中标记所有2 …等等。

谢谢!

编辑

感谢@dnalow,它真的很聪明。但是,我仍然想知道是否有任何正式的解决方案。


问题答案:

我猜您必须伪造您的图例,因为它需要一行来创建图例。

您可以执行以下操作:

import pylab as pl
mycmap = pl.cm.jet # for example
for entry in pl.unique(raw_data):
    mycolor = mycmap(entry*255/(max(raw_data) - min(raw_data)))
    pl.plot(0, 0, "-", c=mycolor, label=mynames[entry])

pl.imshow(raw_data)
pl.legend()

当然,这还不是很令人满意。但是也许您可以在此基础上有所建树。

[编辑:添加了缺少的括号]



 类似资料:
  • 下面是关于如何绘制多色线的示例,我可以根据一些彩色地图绘制沿其长度改变颜色的线。为了给剧情添加一个传说,我添加了以下代码: 这会将图例添加到绘图中(下图),但图例中图标的颜色与线条的颜色完全不相关。这是向该绘图添加图例的错误方法,还是matplotlib的限制?

  • 问题内容: 我有一个在matplotlib中生成的大图。我想在此图的某些(x,y)坐标处添加一些图标。我想知道在matplotlib中是否有任何方法可以做到这一点 谢谢 问题答案: 绝对有可能。这是一个开始: 图标重叠http://up.stevetjoa.com/iconoverlap.png 在此示例中,未根据图的(x,y)坐标定义图标的位置。也许其他人可以帮助您。不过,我希望这个例子对您有所

  • 问题内容: 我在同一张图上绘制了多个seaborn点图。x轴是序数,而不是数字。每个点图的序数值都相同。我想将每个图稍微移到一边,pointplot(dodge = …)参数的方式是在单个图内的多条线内进行,但是在这种情况下,是要在彼此之上绘制多个不同图。我怎样才能做到这一点? 理想情况下,我想要一种适用于任何matplotlib图的技术,而不仅仅是专门针对海洋的技术。由于数据不是数字,因此很难为

  • 我使用Matplolib和熊猫数据帧创建了一个散点图,现在我想给它添加一个图例。这是我的代码: 这里发生的是,根据,散点图中点的颜色将改变。所以,因为颜色是“动态的”,我在创造传奇时遇到了很多麻烦。实际的代码只会创建一个带有一个名为“测试”的标签的图例,而附近没有任何颜色。 以下是数据示例: 我试过了,但我不明白的是: > 如何动态设置图例的标签?例如,我的代码说

  • 问题内容: 我想在同一图中创建具有不同数据集的3D散点图,并在其标签中创建图例。我面临的问题是我无法正确添加图例,并且得到了带有空标签的图,如图所示: http://tinypic.com/view.php?pic=4jnm83&s=5#.Uqd-05GP- gQ 。 更具体地说,我得到了错误: 请在下面找到我到目前为止尝试过的示例演示: 我看过其他大致相似的示例,但没有一个使用scatter()

  • 问题内容: 最近8个小时我一直在阅读文档,但没有发现任何可以帮助我的东西。大概是,但是没有代码在工作,因为它一直说“找不到图像URL”并引发异常。但是我还有其他项目,从来没有这个问题。 因此,有一个类包含这样的月份: 到目前为止,一切都很好。我什至可以在控制台中对其进行测试,并且效果很好,并且可以按值排序。现在,当我尝试从资源中添加图像时,出现了我之前提到的问题:找不到URL。但是,我只能使用图像