【问题标题】:Matplotlib subplot2grid doesn't work properlyMatplotlib subplot2grid 无法正常工作
【发布时间】:2018-11-11 15:16:50
【问题描述】:

我正在尝试编写一个简单的核裂变模拟,到目前为止,我已经让核心本身的模拟正常工作。现在我想做的是在模拟附近有第二张图,告诉用户从核心输出了多少功率。

话虽如此,我正在尝试使用subtplot2grid,但我似乎无法为我的程序找到合适的测量值。我还在核心模拟中添加了一个plt.Rectangle 的补丁,用作我的核心的边界,我尝试在有和没有补丁的情况下运行程序,这似乎是问题所在。尽管如此,我希望保留那个矩形,但请帮我找到正确的尺寸,并解释为什么有补丁和没有补丁的尺寸会不同。

这是我的代码:

import matplotlib.pyplot as plt
import matplotlib.animation as animation

BOUNDS = [-20,20,-20,20]

fig = plt.figure()

ax = plt.subplot2grid((3,2),(0,0), rowspan = 2, colspan = 2, aspect = 'equal', autoscale_on = False,
                          xlim = (-51.2,51.2), ylim = (-50.4,50.4))
ax1 = plt.subplot2grid((3,2),(2,1))

ax1.set_xlabel('Time')
ax1.set_ylabel('Jouls')

rect = plt.Rectangle(BOUNDS[::2], #Creates the frame of the board (black rectangle)
                 BOUNDS[1] - BOUNDS[0],
                 BOUNDS[3] - BOUNDS[2],
                 ec='black', lw=2, fc='none')


ax.add_patch(rect)
ax.axis('off')
plt.show()

如果您将运行该程序,您将看到:

就像我之前说的,我希望功率图靠近模拟,这将占据大部分图形,如下所示:

如果有任何帮助,我将不胜感激,谢谢!

【问题讨论】:

    标签: python python-3.x animation matplotlib graph


    【解决方案1】:

    您可能想使用额外的列并让“核心”图跨越所有 3 行?

    ax = plt.subplot2grid((3,3),(0,0), rowspan = 3, colspan = 2, aspect = 'equal',
                          autoscale_on = False, xlim = (-51.2,51.2), ylim = (-50.4,50.4))
    ax1 = plt.subplot2grid((3,3),(1,2))
    

    【讨论】:

    • ax1 = plt.subplot2grid((3,3),(2,2)) 更适合他的范围。
    • 谢谢,这正是我要找的。我还更改了矩形框架的BOUNDS 以使其更好地适应子图,并与subplots_adjust 一起玩了一下以最终确定它的外观。再次感谢!
    猜你喜欢
    • 2021-07-09
    • 2021-10-04
    • 2019-12-02
    • 2023-03-30
    • 2023-03-12
    • 2023-03-06
    • 2016-12-01
    • 1970-01-01
    • 2019-06-20
    相关资源
    最近更新 更多