gpt4 book ai didi

python - matplotlib:一张图上的多个图

转载 作者:太空狗 更新时间:2023-10-29 20:58:54 25 4
gpt4 key购买 nike

我有一些代码:

import matplotlib.pyplot as plt

def print_fractures(fractures):
xpairs = []
ypairs = []
plt.figure(2)
plt.subplot(212)
for i in range(len(fractures)):
xends = [fractures[i][1][0], fractures[i][2][0]]
yends = [fractures[i][1][1], fractures[i][2][1]]
xpairs.append(xends)
ypairs.append(yends)
for xends,yends in zip(xpairs,ypairs):
plt.plot(xends, yends, 'b-', alpha=0.4)
plt.show()


def histogram(spacings):
plt.figure(1)
plt.subplot(211)
plt.hist(spacings, 100)
plt.xlabel('Spacing (m)', fontsize=15)
plt.ylabel('Frequency (count)', fontsize=15)
plt.show()

histogram(spacings)
print_fractures(fractures)

此代码将产生以下输出: Fig1

我的问题是:

1) 为什么要创建两个单独的图形?我认为 subplot 命令会将它们组合成一个图形。我认为它可能是多个 plt.show() 命令,但我尝试将它们注释掉并只从我的函数外部调用它一次,但我仍然有 2 个窗口。

2) 如何将它们正确组合成 1 个图形?此外,我希望图 2 轴具有相同的比例(即 x 轴上的 400 m 与 y 轴上的 400 m 的长度相同)。同样,我也想垂直拉伸(stretch)直方图 - 这是如何实现的?

最佳答案

正如您已经观察到的,如果您打算只使用一个图形(一个窗口),则不能在每个函数内调用 figure()。相反,只需调用 subplot() 而无需在函数内部调用 show()。如果您处于 plt.ioff() 模式,show() 将强制 pyplot 创建第二个图形。在 plt.ion() 模式下,您可以将 plt.show() 调用保留在本地上下文中(在函数内)。

要使 x 轴和 y 轴的比例相同,请使用 plt.axis('equal')。您可以在下面看到此原型(prototype)的插图:

from numpy.random import random
import matplotlib.pyplot as plt

def print_fractures():
plt.subplot(212)
plt.plot([1,2,3,4])

def histogram():
plt.subplot(211)
plt.hist(random(1000), 100)
plt.xlabel('Spacing (m)', fontsize=15)
plt.ylabel('Frequency (count)', fontsize=15)

histogram()
print_fractures()
plt.axis('equal')
plt.show()

关于python - matplotlib:一张图上的多个图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21321764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com