将图例添加到 LineCollection 图中

2024-01-06

这是与中给出的答案相关的派生问题根据颜色图设置线条颜色 https://stackoverflow.com/questions/19868548/set-line-colors-according-to-colormap其中建议了一个很好的解决方案,根据颜色条绘制多条带有颜色的线(请参见下面的代码和输出图像)。

我有一个列表,存储与每条绘制线关联的字符串,如下所示:

legend_list = ['line_1', 'line_2', 'line_3', 'line_4']

我想将这些字符串作为图例添加到绘图右上角的框中(其中第一个字符串对应于第一条绘制线等)。我怎么能这样做呢?

我愿意不使用LineCollection如果有必要,但我需要保留颜色条和与其关联的每条线的颜色。


代码和输出

import numpy
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection

# The line format you curently have:
lines = [[(0, 1, 2, 3, 4), (4, 5, 6, 7, 8)],
         [(0, 1, 2, 3, 4), (0, 1, 2, 3, 4)],
         [(0, 1, 2, 3, 4), (8, 7, 6, 5, 4)],
         [(4, 5, 6, 7, 8), (0, 1, 2, 3, 4)]]

# Reformat it to what `LineCollection` expects:
lines = [zip(x, y) for x, y in lines]

z = np.array([0.1, 9.4, 3.8, 2.0])

fig, ax = plt.subplots()
lines = LineCollection(lines, array=z, cmap=plt.cm.rainbow, linewidths=5)
ax.add_collection(lines)
fig.colorbar(lines)

# Manually adding artists doesn't rescale the plot, so we need to autoscale
ax.autoscale()

plt.show()

如果你的行数很少,@unutbu 的答案是正确的方法。 (如果您想添加图例,您大概会这样做!)

不过,只是为了显示其他选项,您仍然可以使用LineCollection,您只需使用“代理艺术家”作为图例:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
from matplotlib.lines import Line2D

# The line format you curently have:
lines = [[(0, 1, 2, 3, 4), (4, 5, 6, 7, 8)],
         [(0, 1, 2, 3, 4), (0, 1, 2, 3, 4)],
         [(0, 1, 2, 3, 4), (8, 7, 6, 5, 4)],
         [(4, 5, 6, 7, 8), (0, 1, 2, 3, 4)]]

# Reformat it to what `LineCollection` expects:
lines = [tuple(zip(x, y)) for x, y in lines]

z = np.array([0.1, 9.4, 3.8, 2.0])

fig, ax = plt.subplots()
lines = LineCollection(lines, array=z, linewidths=5,
                       cmap=plt.cm.rainbow, norm=plt.Normalize(z.min(), z.max()))
ax.add_collection(lines)
fig.colorbar(lines)

# Manually adding artists doesn't rescale the plot, so we need to autoscale
ax.autoscale()

def make_proxy(zvalue, scalar_mappable, **kwargs):
    color = scalar_mappable.cmap(scalar_mappable.norm(zvalue))
    return Line2D([0, 1], [0, 1], color=color, **kwargs)
proxies = [make_proxy(item, lines, linewidth=5) for item in z]
ax.legend(proxies, ['Line 1', 'Line 2', 'Line 3', 'Line 4'])

plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将图例添加到 LineCollection 图中 的相关文章

随机推荐

  • 无法通过 Google Apps 脚本打开 Slack 对话框

    我正在尝试使用 google apps 脚本和 Slack 来自动化我的工作 我希望使用 Slack 对话框输入一些文本 以使用 google apps 脚本修改我的 google 电子表格 但是 使用下面的代码 我无法通过以下方式打开对话
  • 如何在 C++ 中将使用 malloc 创建的数组声明为易失性

    我认为下面会给我 10 个易失性整数 volatile int foo 10 但是 我不认为以下内容会做同样的事情 volatile int foo foo malloc sizeof int 10 如果我对此以及如何使用 malloc 拥
  • 如何在 Spark 中通过组聚合滚动时间窗口

    我有一些数据想要按某个列进行分组 然后根据组中的滚动时间窗口聚合一系列字段 以下是一些示例数据 df spark createDataFrame Row date 2016 01 01 group by group1 get avg 5 g
  • HTML 格式的 jasper 报告

    我正在将 jasper 报告库与 GWT 应用程序一起使用 CSV 格式的报告可以很好地生成 但使用 HTML 格式时 它会生成带有缺少图片的图标的 HTML 页面 我知道 jasper 使用名为 PX 的透明图像 但找不到该图像 我怎么解
  • Android 中的 SSL 客户端身份验证

    我需要编写与 Net 服务通信的Android 应用程序 我必须进行服务器 客户端身份验证 我发现了一些有用的主题 这个博客 http blog antoine li index php 2010 10 android trusting s
  • GWT HashMap 与 JSON 之间的转换

    今晚我可能会有点累 但事情是这样的 我想要 GWT HashMap 与 JSON 之间的转换 我将如何实现这一目标 换句话说 我想采取HashMap 获取其 JSON 表示形式 将其存储在某处 然后将其返回到其本机 Java 表示形式 这是
  • 为什么这个 Windows 批处理文件只执行第一行,但所有三行都在命令 shell 中执行?

    我有一个批处理文件 它依次执行三个 Maven 命令 每个命令都可以在脚本中成功执行 本身 但是 当我将所有三个命令添加到同一个文件中时 只有第一个命令在脚本退出之前执行 知道为什么吗 mvn install install file Dg
  • 在asp.net中为Excel工作表提供背景颜色

    我正在 asp net 中执行导出到 Excel 的操作 而不使用任何第三方控件 如何为导出的 Excel 工作表指定背景颜色 根据某些单元格范围 背景颜色可能 不确定 有所不同 比如说单元格 0 5 Excel 中的单元格 A E 是红色
  • Camel Quartz 在路由启动时路由不需要的作业执行

    我有几条路线看起来像 from quartz getJobId cron cronExpression stateful true routeId getJobId autoStartup false to getRouteTo 这些路由可
  • Google Chrome 扩展 + 使用 Facebook 登录 + Parse

    我正在尝试构建一个 google chrome 扩展 一个用例要求用户可以使用 Facebook 登录并通过帖子分享到他们的 Facebook 墙上 正确的申请流程是这样的 用户点击 google chrome 扩展 召唤扩展页面 用户在扩
  • JSF 中有类似 ServletContextListener 的东西吗?

    我想听一下 JSF 应用程序是否启动或停止 就像使用ServletContextListener在普通 Servlet Web 应用程序中 我怎样才能实现这个目标 您可以使用 ApplicationScoped http docs orac
  • SSIS排除Foreach循环容器中的某些文件

    我有一个 SSIS 包 它从特定目录加载 csv 文件 使用表达式和通配符来获取所有文件 目前 FileSpec容器的查找所有具有以下格式的文件 文件名 环境 这工作正常 现在从同一目录加载第二组文件 为了区分这些文件 文件格式为 文件名
  • Doctrine 的实体管理器崩溃并停止运行

    因此 当我在 ZF Doctrine 应用程序上运行测试时 某些测试碰巧破坏了 Doctrine 实体管理器 并且所有顺序测试由于 EM 关闭而失败 我在 test bootstrap php 中设置了 EM application new
  • Webpack 未加载背景图像

    我正在尝试加载图像 background transparent url img select icon png no repeat center right 8px 在我的 style scss 中它不起作用 这是我的 webpack c
  • 合并单独几何图层的图例

    我正在地图上绘制来自两个单独图层的点数据 并希望在一个图例中显示两个图层的信息 下面是一些代码来说明问题 set seed 42 lat1 lt rnorm 10 54 12 long1 lt rnorm 10 44 12 val1 lt
  • iOS - UILabel 或 UITextView 中的动画文本大小变化?

    在显示文本块的应用程序中 当设备转向横向时 我的字体大小会增加 我不喜欢它如何执行整个动画 然后突然跳到新的尺寸 所以我想在旋转过程中为尺寸变化设置动画 我在某处读到 将这个更改放入UIView动画块不起作用 因为字体属性不可设置动画 那么
  • 谷歌分析数据库[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有人知道 Google Analytics 中的数据是如何组织的吗 很难从大量数据中进行选择 它们执行
  • Laravel Http Facade 中的 PHP Curl 代理选项

    我正在使用 Laravel 的 Http 外观来发出请求 例如 Http withHeaders user agent gt My User agent gt retry 3 500 gt get https example com gt
  • mysql_fetch_array 返回重复数据

    每次我运行 mysql fetch array 时都会返回一个带有重复值的数组e g Array 0 gt 1 row id gt 1 1 gt some text first field gt some text 2 gt some te
  • 将图例添加到 LineCollection 图中

    这是与中给出的答案相关的派生问题根据颜色图设置线条颜色 https stackoverflow com questions 19868548 set line colors according to colormap其中建议了一个很好的解决