如何在同一图形中显示多个matplotlib.pyplot图?

1 投票
2 回答
6154 浏览
提问于 2025-04-17 08:26

我正在制作三个散点图,我希望它们都能在同一个窗口里显示(但不是在同一个图上)。现在,每个图都会弹出一个单独的窗口,总共三个窗口。如果我把 matplotlib.pyplot.show() 放到循环外面,那么它们就会都画在同一组坐标轴上。

import matplotlib.pyplot

time = [1,2,3]
value = {}
value['x'] = [1,2,3]
value['y'] = [1,4,9]
value['z'] = [1,8,27]
for dimension in ['x', 'y', 'z']:
    matplotlib.pyplot.scatter(time, value[dimension])
    matplotlib.pyplot.show()

2 个回答

1

我觉得可能是Python的版本更新导致上面的代码出问题了。因为现在enumerate这个函数是从0开始的,比如说enumerate(iterable, start=0)就是默认的情况。所以我做了以下修改,代码就能正常运行了:

import matplotlib.pyplot as plt

time = [1,2,3]
value = {}
value['x'] = [1,2,3]
value['y'] = [1,4,9]
value['z'] = [1,8,27]
for k, dimension in enumerate(['x', 'y', 'z'], 1):
#     print(k, dimension)
    plt.subplot(3, 1, k)
    plt.scatter(time, value[dimension])

plt.show()
4

使用 subplot 来创建子图:

import matplotlib.pyplot as plt

time = [1,2,3]
value = {}
value['x'] = [1,2,3]
value['y'] = [1,4,9]
value['z'] = [1,8,27]
for k, dimension in enumerate(['x', 'y', 'z']):
    plt.subplot(3, 1, k)
    plt.scatter(time, value[dimension])

plt.show()

撰写回答