matplotlib 固定子图大小,动态画布大小

ipakzgxi  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(148)

下面的代码创建一个有两个子图的图。一个图包含一个图,另一个图包含一个表。

import matplotlib.pyplot as plt
import numpy as np

# Sample data for the graph
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)
n = 10
table_data = np.random.uniform(0, 1, size=(10, n)).round(2)

# Plot the data
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 4))

ax1.plot(x, y)
ax2.axis('off')
ax2.table(cellText=table_data, colLabels=['Column {}'.format(i) for i in range(1, n + 1)],
          loc='center', cellLoc='center')
table = ax2.tables[0]
table.auto_set_font_size(False)
table.set_fontsize(12)
table.scale(1, 1.5)

在这段代码中,主图和子图的大小是固定的。然而,我的数据的列数是不固定的。因此,当数据集包含更多列时,我希望图按列的宽度加宽。然而,ax1图的大小以及表的其他列的大小应该保持不变。因此,绘图画布的宽度以及ax2的宽度应该根据我拥有的列数自动设置。
我怎么才能做到这一点?

lbsnaicq

lbsnaicq1#

如果你尝试使用figsize=(n*3,4),那么它应该可以工作(至少对于我的jupyter笔记本,n*3工作。
下面是n=5

的结果
下面是n=10

的结果
下面是n=2

的结果
这是你要找的吗

相关问题