如何在同一图形中显示多个matplotlib.pyplot图?
我正在制作三个散点图,我希望它们都能在同一个窗口里显示(但不是在同一个图上)。现在,每个图都会弹出一个单独的窗口,总共三个窗口。如果我把 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()