gpt4 book ai didi

python - 在 matplotlib 中创建具有不同形状的子图

转载 作者:太空狗 更新时间:2023-10-30 00:45:56 24 4
gpt4 key购买 nike

meteogram

我希望创建一个具有多个子图的图形,就像 matplotlib 中的气象图一样。我将需要多个不同高度的子图(所有宽度相同,但有些会“更瘦”,有些会“更胖”)。就像上图一样,有的子图要大,有的要小,但不管有多少子图,都需要大到能够传达有用的信息。

当我将子图创建为 pyplot.subplot(2,1,1) 时,它具有我需要的纵横比,但如果我增加行数(例如子图(3,1,1)),则子图变为“太瘦”。我将需要在一个图中放置六个这样的图,但如果我开始在图上放置更多子图,它们就会变得太“小”。

简单地说,在 matplotlib 中是否可以在不拼接多个图像的情况下像这样的气象图?这些图像将通过 url 请求从服务器返回,所以从技术上讲这是可能的,但如果我能在库中解决这个问题,那将是首选。

matplotlib 的文档非常棒,但 matplotlib 似乎经过调整可以为您提供具有相同纵横比的子图,而不是让您随着子图数量的增加提供具有任意纵横比的子图。我在不同子图大小的网上找不到一个例子。

最佳答案

您可以通过在归一化坐标(构造时)中为其提供边界框来完全控制轴定位。格式为 [left, top, width, height]。

我将如何设置图形的示例:

import matplotlib.pyplot as plt


left = 0.1
width = 0.8

ax1 = plt.axes([left, 0.5, width, 0.45])
ax2 = plt.axes([left, 0.3, width, 0.19])
ax3 = plt.axes([left, 0.2, width, 0.09], sharex=ax2)
ax4 = plt.axes([left, 0.1, width, 0.09], sharex=ax2)

# ticks at the top of the top plot
ax1.xaxis.tick_top()

# remove ticks for ax2 and ax3
ax2.xaxis.set_visible(False)
ax3.xaxis.set_visible(False)

# only put ticks on the bottom of ax4
ax4.xaxis.tick_bottom()

plt.show()

我添加了一些您可能会觉得有用的功能(删除顶部刻度、共享 x 轴、将刻度移动到轴的顶部)。

结果:

Example output

HTH

关于python - 在 matplotlib 中创建具有不同形状的子图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13507315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com