我对python相当陌生。目前使用 matplotlib 我有一个脚本,它返回要制作的可变数量的子图,我将它传递给另一个脚本来进行绘图。我想将这些子图排列成一个很好的排列,即“最接近正方形的东西”。所以答案是唯一的,假设我对列数的权重更高

示例:假设我要制作 6 个图,我需要的网格是 2x3。如果我有 9 个,那就是 3x3。如果我有 12 个,那就是 3x4。如果我有 17 个,它是 4x5,但只创建了最后一行中的一个。

尝试解决方案:我可以轻松找到最近的足够大的正方形:

    num_plots = 6
    square_size = ceil(sqrt(num_plots))**2

但这会留下空白的情节。有没有办法制作正确的网格大小?

最佳答案

这是我过去所做的

num_plots = 6
nr = int(num_plots**0.5)
nc = num_plots/nr
if nr*nc < num_plots:
    nr+=1
fig,axs = pyplot.subplots(nr,nc,sharex=True,sharey=True)

关于python - 将数据重塑为 'closest square',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38446984/

10-16 22:55