如何使用matplotlib创建带状图表?

时间:2018-10-05 09:45:12

标签: python matplotlib

是否可以使用matplotlib创建图,所以当窗口最大化时,图仅占据屏幕的一小部分?例如,请考虑以下示例。在这种情况下,我想将3个子图布置在一条水平线上,并且我想保持较小的尺寸,这就是为什么我添加2行带有空白子图的原因。当我使用figsize时,弹出的窗口确实具有指定的大小,但是一旦最大化,matplotlib会重新调整子图以占据整个屏幕。我希望matplotlib重绘内容以适合此“条”,而不是相反。

因此,是否可以直接创建带状结构,而无需从matplotlib进行不必要的调整大小,而无需添加所有这些不必要的空白子图来完成任务?

谢谢!

编辑

我正在使用Python 3.5和Matplotlib 2.2.3运行此程序。交互式后端是TkAgg。

enter image description here

2 个答案:

答案 0 :(得分:2)

Matplotlib的子图网格相对于图形尺寸以单位定位。因此,在绝对坐标中定位子图需要进行一些调整。
您可以以英寸为单位定义网格的宽度和高度,然后在每次调整图形大小时计算网格的边距。 在下面的图中,无论图形大小如何,网格始终保持4英寸宽和1英寸高。

.dark_mode
{
    background-color: #333 !imprtant;
    color: #fff !important;
}

答案 1 :(得分:0)

您没有解释您的可视化方法。 因此,根据我的说法,您可以尝试子图。 在这里查看子图的工作方式(https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.subplot

from matplotlib import pyplot as PLT

fig = PLT.figure()

ax1 = fig.add_subplot(211)
ax1.plot([(1, 2), (3, 4)], [(4, 3), (2, 3)])

ax2 = fig.add_subplot(221)
ax2.plot([(7, 2), (5, 3)], [(1, 6), (9, 5)])

ax3 = fig.add_subplot(222)
ax3.plot([(7, 2), (5, 3)], [(1, 6), (9, 5)])

PLT.show()