在带有子图的 geopandas 图中添加图例会改变图的大小

2023-12-01

我想用 matplotlib 子图绘制两个 GeoPandas 图。两张地图具有相同的图例,因此我只想有一个图例。但是,如果我向 GeoPandas 图之一添加图例,该图就会变得稍微小一些。这是一个问题,因为这两个图的大小会变得不同。

这是我的代码:

fig,ax = plt.subplots(1, 2, figsize=(12,8))
sealand_grid.plot(column=sealand_grid['p_2012'], 
                  ax=ax[0],
                  cmap='magma')
sealand_grid.plot(column=sealand_grid['p_2013'], 
                  ax=ax[1],
                  cmap='magma', 
                  legend=True,
                  legend_kwds={'shrink': 0.3})
ax[0].set_title('Housing prices 2012', fontsize=18)
ax[1].set_title('Housing prices 2013', fontsize=18)
fig.patch.set_facecolor('xkcd:white')
ax[0].axis('off')
ax[1].axis('off')
fig.tight_layout()

where sealand_grid是我的 GeoPandas 数据框,并且p_2012 and p_2013是两张图中绘制的变量。

如何使两张地图大小相同,同时只有一个图例?

the resulting plot looks like this


为了重现您的问题,我使用了这段代码,它基本上显示了相同的结果:由于颜色条,右侧的图像比左侧的图像稍小。

import matplotlib.pyplot as plt
import numpy as np

D2012 = np.random.rand(10, 10)
D2013 = np.random.rand(10, 10)

fig, (ax1, ax2) = plt.subplots(1, 2, figsize = (16,8))

P2012 = ax1.imshow(D2012,
             cmap = 'magma')
P2013 = ax2.imshow(D2013,
             cmap = 'magma')

ax1.set_title('2012', fontsize = 18)
ax2.set_title('2013', fontsize = 18)
ax1.axis('off')
ax2.axis('off')
plt.colorbar(P2013)

plt.show()

这给出了这个情节:

enter image description here

我通过这个转变解决了:

import matplotlib.pyplot as plt
import numpy as np

D2012 = np.random.rand(10, 10)
D2013 = np.random.rand(10, 10)

fig, (ax1, ax2) = plt.subplots(1, 2, figsize = (16,8))
ax3 = fig.add_axes([0.85, 0.1, 0.1, 0.8])

P2012 = ax1.imshow(D2012,
             cmap = 'magma')
P2013 = ax2.imshow(D2013,
             cmap = 'magma')

ax1.set_title('2012', fontsize = 18)
ax2.set_title('2013', fontsize = 18)
ax1.axis('off')
ax2.axis('off')
ax3.axis('off')
plt.colorbar(P2013, ax = ax3)

plt.show()

这给出了这个情节:

enter image description here

基本上,我添加第三个轴,将其关闭并添加颜色条。您需要注意该第三轴的位置以及方法内的参数:fig.add_axes([0.85, 0.1, 0.1, 0.8]).
我知道这当然不是最优雅的解决方案。


EDIT

一个更强大和优雅的解决方案是保留 2 个轴,但在定义它们时设置它们的大小和位置:

import matplotlib.pyplot as plt
import numpy as np

D2012 = np.random.rand(10, 10)
D2013 = np.random.rand(10, 10)

fig = plt.figure(figsize = (16,8))
ax1 = fig.add_axes([0, 0.2, 0.6, 0.6])
ax2 = fig.add_axes([0.4, 0.2, 0.6, 0.6])

P2012 = ax1.imshow(D2012,
             cmap = 'magma')
P2013 = ax2.imshow(D2013,
             cmap = 'magma')

ax1.set_title('2012', fontsize = 18)
ax2.set_title('2013', fontsize = 18)
ax1.axis('off')
ax2.axis('off')
plt.colorbar(P2013)

plt.show()

这给出了这个情节:

enter image description here

在这种情况下,您必须注意以下几行的两个轴的位置和大小:

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

在带有子图的 geopandas 图中添加图例会改变图的大小 的相关文章

  • 如何生成给定范围内的回文数列表?

    假设范围是 1 X 120 这是我尝试过的 gt gt gt def isPalindrome s check if a number is a Palindrome s str s return s s 1 gt gt gt def ge
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • Python 多处理示例不起作用

    我正在尝试学习如何使用multiprocessing但我无法让它发挥作用 这是代码文档 http docs python org 2 library multiprocessing html from multiprocessing imp
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • 将 github 上的包安装到 Spyder 中

    我一直在尝试安装并导入mpl finance来自 github 的包 在我的 Spyder 环境中没有成功 我努力了 pip install e git https github com matplotlib mpl finance git
  • 如何使用装饰器禁用某些功能的中间件?

    我想模仿的行为csrf exempt see here https docs djangoproject com en 1 11 ref csrf django views decorators csrf csrf exempt and h
  • keras加载模型错误尝试将包含17层的权重文件加载到0层的模型中

    我目前正在使用 keras 开发 vgg16 模型 我用我的一些图层微调 vgg 模型 拟合我的模型 训练 后 我保存我的模型model save name h5 可以毫无问题地保存 但是 当我尝试使用以下命令重新加载模型时load mod
  • python pandas 中的双端队列

    我正在使用Python的deque 实现一个简单的循环缓冲区 from collections import deque import numpy as np test sequence np array range 100 2 resha
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • PyAudio ErrNo 输入溢出 -9981

    我遇到了与用户相同的错误 Python 使用 Pyaudio 以 16000Hz 录制音频时出错 https stackoverflow com questions 12994981 python error audio recording

随机推荐

  • 如何只读取英文字符

    我正在阅读一个有时包含中文和英文以外语言字符的文件 如何编写一个只读取英文单词 字母的正则表达式 难道只是 a zA Z 如果我执行上述操作 那么像 e t 这样的词仍然会被选中 但我不希望这样 t match a zA Z gt nil
  • 搜索栏,将路径颜色从黄色更改为白色

    我有两个问题 1 如何将搜索栏 路径 的颜色从黄色 默认颜色 更改为白色 我的意思是 当我滑动拇指时 它会将穿过的线从灰色变为黄色 我希望轨道 线路保持灰色或白色 基本上 我只想移动拇指 而搜索栏中没有颜色变化 2 如何将搜索栏的拇指从矩形
  • Valgrind 检测到仍然存在泄漏

    本块中提到的所有函数都是库函数 我怎样才能纠正这个内存泄漏 它列在 仍然可达 类别 还有 4 个 非常相似 但大小不同 630 bytes in 1 blocks are still reachable in loss record 5 o
  • 不使用 libSystem macOS 链接目标文件

    我正在为 x86 64 上的 macOS 编写一个编译器 但是当我将目标文件链接在一起时 ld says ld dynamic main executables must link with libSystem dylib for infe
  • 为什么只有部分设备会收到推送通知

    我设置了一个推送通知服务 根据 RSS 源向客户端发送通知 我有一项服务每分钟运行一次 以查看是否有新帖子添加到提要中 如果是这样 该服务将向所有客户端发送通知 然而 一些人一直抱怨说他们没有收到任何推送通知 这是我用来发送消息的函数 fu
  • 多次克隆 NumPy 数组

    我将一张图片加载到 numpy 数组中 需要将其图片设置为 2 个不同的阈值 import numpy as np import cv2 cap cv2 Videocapture 0 pic cap read pic1 pic pic2 p
  • 受限 CRTP 过早拒绝

    我正在尝试实现一个从基模板继承的派生类 并将派生类作为其模板参数 希望下面的示例能够澄清问题 template
  • 如何在 Windows 8 中重复使用在 Mac 上创建的软链接

    我在 MacBook Pro 中创建的 1000 张图像说 我的软链接很少 我正在 iOS 应用程序中使用它们 现在我正在 Windows 8 手机应用程序中移植相同的应用程序 因此我想在 Windows Phone 8 应用程序中重用相同
  • Java 中使用派生类型作为参数的方法重载

    假设我有现有的代码 我想扩展它 但又想尽可能避免更改它 这段代码周围有一个接收某种类型的方法 Engine method Base b 现在 我想扩展这个功能 因此 我将 Base 扩展为一个名为 Derived 的类型 它包含我需要的更多
  • 如何在 angular2 中应用主题?

    我需要为我在 angular2 中开发的 Web 应用程序提供两个主题 红色 蓝色 当我更改主题时 所有组件都应该反映它吗 在 Angular2 中应用主题的最佳实践是什么 您可以使用文件代币从 angular platform b row
  • JDBCPreparedStatement导致MySQL语法错误

    我收到错误 您的 SQL 语法有错误 请检查与您的 MySQL 服务器版本对应的手册 了解在第 1 行 orderr 附近使用的正确语法 所以我认为错误是我使用了两个 但在我的代码中我没有使用任何 注意该表实际上被命名为 order pub
  • 如何将 cv::MAT 转换为 NHCW 格式?

    在User Guide html中 tensorRT的输入 输出需要使用NCHW格式 什么是 NCHW 格式 如何将 cv MAT 转换为 NCHW 格式 我使用 TensorRT 运行推理 如下代码所示 没有任何错误 但是 这不是正确的输
  • 用于 WPF 富客户端应用程序的图像编辑器组件

    您是否知道可在 WPF 客户端应用程序中使用的简单 NET 组件 该组件具有以下功能 将图像从文件或剪贴板加载到画布中 缩放和移动 定义画布背景颜色 将画布导出为新图像 提前谢谢 普伦森 这些呢 http xdraw codeplex co
  • 使用 asyncio 时无法使用 os.fork() 将多个进程绑定到一个套接字服务器

    我们都知道 使用 asyncio 可以显着提高套接字服务器的性能 如果我们能够利用 cpu 中的所有核心 可能通过多处理模块或os fork etc 我现在正在尝试构建一个多核套接字服务器演示 其中一个异步套接字服务器侦听每个核心并全部绑定
  • 具有相同标识符值的不同对象已与保存时的会话错误相关联[重复]

    这个问题在这里已经有答案了 可能的重复 Spring Hibernate 具有相同标识符值的不同对象已与会话关联 我的休眠注释一直存在问题 我在两个类之间有双向关系 这是映射 感谢axtavt Entity public class Rec
  • PhantomJS:在 REPL 中运行时 page.open() 没有响应

    我试图通过标准输入发送一些 phantomJS 来运行它 但我打开的网页没有响应 这是我尝试执行的 JavaScript require webpage create open http google com function consol
  • 错误:无法读取 null 的属性“close”

    你好 亲爱的社区 我想知道为什么当我尝试使用 mongodb 和 nodejs 时会收到此错误 const MongoClient require mongodb MongoClient MongoClient connect mongod
  • usaco:十三号星期五我的逻辑有什么问题吗?

    该问题要求计算一周中每一天出现的 13 号的数量 这是我的代码 class CopyOffriday public static void main String args throws IOException BufferedReader
  • Spark 在运行 LinearRegressionwithSGD 时未利用所有核心

    我正在本地计算机 16G 8 个 cpu 核心 上运行 Spark 我试图在大小为 300MB 的数据集上训练线性回归模型 我检查了CPU统计信息以及正在运行的程序 它只执行一个线程 文档称他们已经实现了 SGD 的分布式版本 http s
  • 在带有子图的 geopandas 图中添加图例会改变图的大小

    我想用 matplotlib 子图绘制两个 GeoPandas 图 两张地图具有相同的图例 因此我只想有一个图例 但是 如果我向 GeoPandas 图之一添加图例 该图就会变得稍微小一些 这是一个问题 因为这两个图的大小会变得不同 这是我