使用 matplotlib 在多个子图之外添加图例

2024-03-01

我正在制作一些人物,其中每个人物都有不同数量的子图。 我试图在右下角添加图例,但遇到了一些麻烦。 我尝试在右下角添加一个新的子图,并仅向其添加图例,但图例后面有一个空的子图。 这就是我现在站的地方,但无论最后一个子图在哪里,都希望图例位于右下角。

fig = plt.figure()
matplotlib.rc('xtick', labelsize=8) 
matplotlib.rc('ytick', labelsize=8)

for line in a[1:]:

        ax = fig.add_subplot(subcol,subrow,counter)
        ax.plot(x,line[3:7],marker='o', color='r', label = 'oral')
        ax.plot(x,line[7:],marker='o', color='b',label = 'physa')
        ax.set_title(line[1],fontsize = 10)
        counter+=1

ax.legend(bbox_to_anchor=(2, 0),loc = 'lower right')
plt.subplots_adjust(left=0.07, right=0.93, wspace=0.25, hspace=0.35)
plt.suptitle('Kegg hedgehog',size=16)
plt.show()

更好的解决方案是

fig.legend(handles, labels, loc='', ...)

这会将图例而不是子图添加到图中。

适应你的例子,它会是这样的

fig = plt.figure()
matplotlib.rc('xtick', labelsize=8) 
matplotlib.rc('ytick', labelsize=8)

handles = []
for line in a[1:]:

        ax = fig.add_subplot(subcol,subrow,counter)
        l1 = ax.plot(x,line[3:7],marker='o', color='r', label = 'oral')
        l2 = ax.plot(x,line[7:],marker='o', color='b',label = 'physa')
        if not handles:
           handles = [l1, l2]
        ax.set_title(line[1],fontsize = 10)
        counter+=1

fig.legend(handles, ['oral', 'physa'], bbox_to_anchor=(2, 0),loc = 'lower right')
plt.subplots_adjust(left=0.07, right=0.93, wspace=0.25, hspace=0.35)
plt.suptitle('Kegg hedgehog',size=16)
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 matplotlib 在多个子图之外添加图例 的相关文章

随机推荐

  • 为什么gcc中malloc将值初始化为0?

    可能各个平台的情况不一样 但是 当我使用 gcc 编译并运行下面的代码时 我在 ubuntu 11 10 中每次都得到 0 include
  • Microsoft.FSharp.Math.Matrix 发生了什么?

    有点奇怪 这个类类型如何从 VS2010 发布的 F 中删除 有谁知道它去哪儿了 或者现在在哪里 它位于 F powerpack 中 F 团队将其用于 不稳定 代码 这些代码的发布和更新频率将高于 F 和库的主要版本 请注意 该代码仍然是高
  • 与scala反射库不一致

    我无法理解为什么在 2 11 1 中使用 scala 的运行时反射会给出看似不一致的结果 我正在尝试检查 java 对象中包含的字段的类型 如下所示 import java util List import java util ArrayL
  • 如何在jquery中缓慢改变背景属性?

    我想要为背景设置动画 但它不会随 animate 改变 document ready function menu hover function this stop animate background moz radial gradient
  • 如何防止在 Cloudflare 上暴露源 IP 地址?

    在 Cloudflare DNS 设置页面上 它指出An A AAAA CNAME or MX record is pointed to your origin server exposing your origin IP address
  • 列表框数据模板 - 只能通过单击子元素来选择项目,而不仅仅是项目上的任何位置

    我有一个带有项目数据模板的列表框 问题在于 仅通过单击项目上的任意位置无法选择项目 必须选择项目 我必须单击特定的子元素才能使其实际工作 我的项目有一个图像和一个文本块 如果我将鼠标悬停在图像或文本块上 我实际上会看到悬停效果 如果我将鼠标
  • Spring-boot Resttemplate response.body 为 null 而拦截器清楚地显示 body

    使用 Spring boot 1 5 10 RELEASE 我得到的 response body 为 null 这是我使用 RestTemplate 的方式 RestTemplate restTemplate new RestTemplat
  • Maven javadoc + 自定义 doclet

    从命令行调用 mvn 时如何指定 dolect 工件 mvn clean install javadoc javadoc Ddoclet my Doclet DdocletArtifact 你应该添加这样的东西到你的pom xml
  • 具有动态谓词的表的最佳索引

    我想优化SQL Server中下表的查询速度 CREATE TABLE dbo PriceNodeLookupIndex Id int IDENTITY 1 1 NOT NULL PriceNodeId int NOT NULL ItemI
  • 如何解决 TypeError: 无法序列化 float Python Elementtree

    我有一个调试问题 由于我是新来的 请原谅可能的简陋文字墙 经过几个小时我终于得到了elementtree做我想做的事 但我无法输出我的结果 因为 tree write output3 xml 也 print ET tostring root
  • 如何使用 Python 和 web3.py 调用智能合约函数

    我在以太坊测试网络上部署了一个合约 其中包含一些功能 并且它们在使用 Remix 界面时都恰好可以工作 当尝试在 Python 中使用 web3 py 调用这些函数时 我只能调用公共函数 并且该部分工作正常 问题是调用具有 限制 的函数 例
  • 验证 RSA 密钥是否与 Java 中的 X.509 证书匹配

    我有一个 RSA 密钥和一个用于 SSL 连接的 X 509 证书 密钥和证书存储在 PEM 格式的文件中 由 OpenSSL 生成 并在 Apache HTTP 服务器环境中使用 有没有一种简单的方法可以仅使用 Java 代码 不执行 o
  • Swift 中递归调用期间的 BAD_ACCESS

    在玩 Swift 时 我遇到了崩溃的情况 但我仍然不明白为什么 让我们定义 class TestClass var iteration Int 0 func tick gt Void if iteration gt 100000 print
  • Durandal Compose:激活方法并不总是被调用

    在 SPA 中 我有一个视图 其中使用 compose 绑定包含另一个视图 该子视图 子视图 有一个 activate 方法 该方法在加载父视图时被调用 div div 但是 当我离开父视图然后返回到它 不刷新浏览器 时 子视图中的 act
  • 子路由上的页面重新加载

    Using Angular 2 路由器 https angular io docs ts latest guide router html 我有一个 2 级路由 root routing and child routing 我的问题是 当导
  • 是否可以从仅公开迭代器的“readNext”部分的对象创建流?

    我尝试从 csv 文件中读取数据 但由于其大小 没有先将其全部加载到内存中 我找到的用于读取 csv 的库是opencsv 效果非常好 但只公开了两个方法 readAll and readNext readAll已经出来了 因为我不想同时将
  • GitHub API:如何检查组织名称的可用性?

    我可以向 GitHub API 发送 HTTP 请求 以自动创建新的或删除存储库 删除存储库等 例如 我可以创建一个新的存储库 如下所示 curl user user https api github com user repos d na
  • 如何在 AuditorAware 中获取 Keycloak 用户名

    我已经使用 Spring Data JPA 实现了审计 完全遵循本文档 https www baeldung com database auditing jpa 当我运行应用程序时 一切正常 但是当我将 WAR 部署到 Tomcat 并尝试
  • Android 存储库模式

    我有几个关于存储库模式的问题 如果我仅使用离线数据库 例如带有 LiveData 的 Room 是否可以使用存储库模式 如果我的应用程序现在处于离线状态 但将来会连接到远程数据库 我是否应该实现存储库模式 或者稍后执行它不会成为问题 首先
  • 使用 matplotlib 在多个子图之外添加图例

    我正在制作一些人物 其中每个人物都有不同数量的子图 我试图在右下角添加图例 但遇到了一些麻烦 我尝试在右下角添加一个新的子图 并仅向其添加图例 但图例后面有一个空的子图 这就是我现在站的地方 但无论最后一个子图在哪里 都希望图例位于右下角