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

use*_*160 5 python matplotlib subplot

天气图表

我正在寻找创建一个包含多个子图的图形,就像matplotlib中的这个图表一样.我将需要多个不同高度的子图(所有相同的宽度,但有些将是"更瘦",有些将是"更胖").就像上面的图像一样,一些子图需要很大,一些需要很小,但它们需要足够大以传达有用的信息,无论有多少子图.

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

简单地说,这是一个像matplotlib可能没有拼接多个图像的meteogram的图形吗?这些图像将通过url请求从服务器返回,因此从技术上来说这是可能的,但如果我可以在库中解决这个问题,那将是首选.

matplotlib的文档非常棒,但似乎matplotlib被调整为给出具有相同宽高比的子图,而不是随着子图的数量增加而给出具有任意宽高比的子图.我在网上找不到不同子图大小的单个例子.

pel*_*son 6

您可以通过在标准化坐标(构造中)中为其提供边界框来完全控制轴定位.格式为[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()
Run Code Online (Sandbox Code Playgroud)

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

结果:

示例输出

HTH