绘制在同一轴python上的for循环内生成的多个图

Mic*_*the 8 python matplotlib python-3.x

我的代码如下,问题是没有一个情节,我得到242个情节.我试过把plt.show()外面的循环,它没有用.

import numpy as np
import matplotlib.pyplot as plt
import csv

names = list()

with open('selected.csv','rb') as infile:
    reader = csv.reader(infile, delimiter = ' ')
    for row in reader:
        names.append(row[0])

names.pop(0)

for j in range(len(names)):
    filename = '/home/mh/Masters_Project/Sigma/%s.dat' %(names[j])
    average, sigma = np.loadtxt(filename, usecols = (0,1), unpack = True, delimiter = ' ')
    name = '%s' %(names[j]) 
    plt.figure()
    plt.xlabel('Magnitude(average)', fontsize = 16)
    plt.ylabel('$\sigma$', fontsize = 16)
    plt.plot(average, sigma, marker = '+', linestyle = '', label = name)
plt.legend(loc = 'best')
plt.show()
Run Code Online (Sandbox Code Playgroud)

Ffi*_*ydd 11

您的问题是,您正在使用每次迭代创建一个新的数字plt.figure().从for循环中删除此行,它应该可以正常工作,如下面的简短示例所示.

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)

for a in [1.0, 2.0, 3.0]:
    plt.plot(x, a*x)

plt.show()
Run Code Online (Sandbox Code Playgroud)

示例图