在 python 中使用绘制数据的微型版本作为图例句柄

2023-11-29

有没有办法使用 matplotlib 中的图形中绘制的线作为图例中的句柄?例如,我在想,在这个基本代码中,而不是图例中的直线,有一个我绘制为手柄的正弦波的小版本。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0,15,0.1)
y = [np.sin(x1) for x1 in x]

plt.plot(x,y, label = 'sine wave')
plt.legend()
plt.show()

提前致谢!


我认为这是一个非常有趣的问题。提供了解决问题所需的大部分信息在 matplotlib 的“图例指南”中。但是,我确实认为文档有点稀疏。

解决您问题的关键是创建一个新的“处理程序”,在尝试绘制艺术家的传奇时将调用该处理程序,并返回一个可以具有任何属性或形状的艺术家。在本例中,我们只需使用正确的数据创建一个新的 Line2D 对象即可绘制正弦波。

from matplotlib.legend_handler import HandlerLine2D
import matplotlib.pyplot as plt


class HandlerSinWave(HandlerLine2D):
    def create_artists(self, legend, orig_handle,
                       xdescent, ydescent, width, height, fontsize,
                       trans):
        xdata, y1 = orig_handle.get_data()

        # scale the sin wave amplitude so that it fits neatly in the legend box
        # first, rescale so that it is centered around 0 and have an amplitude of 1
        min_val = np.min(y1)
        max_val = np.max(y1)
        y2 = (y1-(min_val+(max_val-min_val)/2))/((max_val-min_val)/2)
        # then rescale based on the dimension of the box
        y3 = height*y2 + xdescent+height/2
        legline = matplotlib.lines.Line2D(xdata, y3)

        self.update_prop(legline, orig_handle, legend)
        legline.set_transform(trans)
        return [legline]


fig, ax = plt.subplots()
x = np.arange(0,15,0.1)
y = np.sin(x)

sin1, = plt.plot(x,y, label='sine wave')

plt.legend(handler_map={sin1: HandlerSinWave()})

enter image description here

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

在 python 中使用绘制数据的微型版本作为图例句柄 的相关文章

随机推荐

  • 更新 .NET Core 工具

    我正在尝试使用 电子邮件受保护 为了在这一点上做到这一点 我已经有了 安装了 Visual Studio 2019 预览版 安装了 NET Core 3 1运行时 安装了 NET Core 3 1 SDK 现在我仍然无法运行命令dotnet
  • R[写入控制台]:gettext(fmt,domain = domain,trim = trim)中的错误:3个参数传递给.Internal(gettext),需要2个

    我想在python中使用R函数 我在python中安装了rpy2 当我想加载函数 from rpy2 import robjects 时 我面临以下错误 R 写入控制台 gettext fmt domain domain trim trim
  • MapOverlay 绑定不起作用

    我正在尝试使用 MVVM 代码结构在 Windows Phone 8 上运行地图叠加 我似乎无法将 MapOverlay 的 GeoCoordinate 属性正确绑定到我的 ViewModel 而且我不知道为什么 目前的 XAML 是 He
  • 在jqGrid中,是否可以使用Ajax来获取custom_element的数据?

    我正在做某事类似于这个问题我有一个复选框列表作为自定义编辑控件 不同之处在于我想从服务器获取我的列表 而不是在客户端上硬编码 检查1 检查2 检查3 有什么方法可以在列设置或在自定义元素功能 看来我需要类似的东西dataUrl您用于选择项目
  • 从多个表中获取数据

    医学硕士 MedicalID MedicalName 1 pk abc 2 xyx 3 pqr 儿童医学硕士 ChildMID MedicalID Station Name 1 pk 1 fk bnb mfk 2 1 def rwr 3 2
  • 使用 LINQ 获取多维数组的分区(N 维数组的 (N-1) 维实例)

    我想从 3d 数组中获取 2d 数组 假设我有一个维度为 10 10 10 的双 3d 数组 A3我需要获得一个二维数组 A2 A3 5 即第二维的索引等于例如5 如果我想获得 2d 数组 A2 即 2d 数组的 1d 实例 的分区 例如
  • 查找嵌套在 Repeater 控件内的控件

    我正在尝试查找在中继器中呈现的文本框的值thoughUserControl 即 Repeater 有一个 UserControl 的占位符 UserControl 内部是 TextBox 标记实际存在的位置 我以前用文本框做过这个直接在里面
  • 如何在 JavaScript 中使用 fetch() 读取 JSON 文件?

    如何使用 javascript 中的 fetch 函数读取本地 JSON 文件 我有一个包含一些转储数据的 JSON 文件和一个读取服务器上 JSON 文件的函数 例如 readJson console log this let vm th
  • 如何将数字附加到 XSL 文件内的 ID

    我有以下 XSL 文件 该文件将重复多次 在我的例子中为 4 次
  • 如何从另一个线程更新 GUI?

    我的线程有问题JSF申请 也许有人可以帮助我 启动后 我运行新线程 该线程正在进行一些后台操作 该线程正在工作while true loop 但当它无能为力时 它会调用wait 它正在循环工作 因为我必须调用notify 在一些用户操作之后
  • BeanUtils 复制属性:注册 ConvertUtils

    我有用 Java 编写的 Web 应用程序 我在用着BeanUtils copyProperties方法 如果一个date字段为空 会抛出错误 我通过使用解决了它ConvertUtils register method ConvertUti
  • Spring Data Neo4j:使用嵌入的 Neo4j 服务器:JAR 打包

    我终于能够在我的 java 应用程序中创建一个使用嵌入式数据库的服务器实例 如下所示here 当我从 Eclipse 运行它时 它可以正常工作 但这实际上不是我的目的 除其他事项外 我的应用程序向数据库提供新的节点和关系 我有一个 Neo4
  • OWL 2 罗化

    在描述逻辑中 有一个概念叫 rolification OWL 和规则 第 3 2 节 它将概念 类 转换为角色 属性 例如 当我们滚动时R x 我们得到r x x 该技术对于在深度学习中表达一些规则很有用 我们如何在 OWL 2 中做到这一
  • 使用 Mule 发送格式化邮件

    我正在使用 Mule 发送电子邮件 我需要为发送的文本添加格式 邮件的内容是有效负载 其中包含我在 Java 方法中形成的字符串 并使用表达式转换器发送到流程 我需要向该字符串添加格式 粗体 下划线 颜色 我该怎么做 这是我的流程的摘录
  • 如何使用 PHP GD 显示动态生成的内嵌图像

    我正在尝试使用 PHP GD 合并图像来动态生成图像 我想知道是否有一种方法可以在我的网页中显示图像 而不需要将其存储在服务器上的某个位置 例如 我创建了以下代码来合并图像 function create image main image
  • 乘客安装时出现转换错误。对 nginx 模块有影响吗?

    在OS X 10 6 8下安装passenger 首先在rbenv下 然后卸载rbenv后 也在rvm下 Mini user gem install passenger 正在生成转换错误 unable to convert xE4 to U
  • Pygame 需要“for event in pygame.event.get()”以免崩溃

    该程序像这样工作正常 但是 我不明白为什么它需要无用的for event in pygame event get None in the gameOverwhile 语句里面game loop 如果您能找到一种方法来删除它或解释为什么没有它
  • 使用内置 Python 模块填写 Web 表单数据

    好吧 我已经在我的冒险中使用了 mechanize requests beautiful soup 甚至 selenium 来做这样的事情 我得出的结论是 urllib 和其他默认模块是最好的方法 唯一的问题是我根本不知道如何使用它 那么有
  • aspnet core 应用程序中的 Autofac.Multitenant 似乎无法正确解析租户范围的依赖项

    我正在升级利用 Autofac Multitenant 框架的多租户 dotnet 核心解决方案 我没有太多运气让租赁解决方案正常工作 我在这里创建了一个简单的问题演示 https github com SaltyDH AutofacMul
  • 在 python 中使用绘制数据的微型版本作为图例句柄

    有没有办法使用 matplotlib 中的图形中绘制的线作为图例中的句柄 例如 我在想 在这个基本代码中 而不是图例中的直线 有一个我绘制为手柄的正弦波的小版本 import matplotlib pyplot as plt import