Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将带有图例的python绘图简化为循环_Python_Matlab_Numpy_For Loop_Simplify - Fatal编程技术网

将带有图例的python绘图简化为循环

将带有图例的python绘图简化为循环,python,matlab,numpy,for-loop,simplify,Python,Matlab,Numpy,For Loop,Simplify,有什么好办法可以把下面的代码简化成一个循环?重复的代码将达到数千个。e、 g.test-101.csv…test-2233.csv import pandas as pd import matplotlib import matplotlib.pyplot as plt import numpy as np data = pd.read_csv('reports/test-101.csv', header=None) line1, = plt.plot(data[2], data[1], l

有什么好办法可以把下面的代码简化成一个循环?重复的代码将达到数千个。e、 g.test-101.csv…test-2233.csv

import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import numpy as np


data = pd.read_csv('reports/test-101.csv', header=None)
line1, = plt.plot(data[2], data[1], label='line 101')
line1m, = plt.plot(np.array([0, 12]), np.array([np.mean(data[1]), 
np.mean(data[1])]), label='line-101 mean')

data = pd.read_csv('reports/test-102.csv', header=None)
line2, = plt.plot(data[2], data[1], label='line 102')
line2m, = plt.plot(np.array([0, 12]), np.array([np.mean(data[1]), 
np.mean(data[1])]), label='line-102 mean')

data = pd.read_csv('reports/test-103.csv', header=None)
line3, = plt.plot(data[2], data[1], label='line 103')
line3m, = plt.plot(np.array([0, 12]), np.array([np.mean(data[1]), 
np.mean(data[1])]), label='line-103 mean')
.
.
.


plt.legend(handles=[line1, line2, line3,
                      line1m, line2m, line3m])

我相信这可能会有帮助

import os

import numpy as np
import pandas as pd

from matplotlib import pyplot as plt

csv_dir = 'reports/'
csv_files = [csv for csv in os.listdir(csv_dir)]

plt_handles = []
index = 0

for csv_file in csv_files:
    # You can parse the csv_file to get the index handle if you wish
    data = pd.read_csv(csv_dir + csv_file, header=None)
    line, = plt.plot(data[2], data[1], label='line %d' % index)
    line_m, = plt.plot(np.array([0, 12]), np.array([np.mean(data[1]), 
        np.mean(data[1])]), label='line-%d mean' % index)

    plt_handles.append((line, line_m))
    index += 1  # for demonstration purposes - if you do not parse csv fname

lines, lines_m = zip(*plt_handles)  # transpose matrix - lines before means

plt.legend(handles=lines + lines_m)

如何循环标签?我改进了答案,忘记了标签!还有什么方法可以简化这一行(
line\m,=…
)吗?很高兴我能帮上忙。我没有你拥有的数据,我也不知道你到底想用它们做什么,但我认为你可以用
np.full((2,),data[1].mean())
简化第二个参数。我相信有很多方法可以简化python中的事情。玩吧,谢谢。这就是我所需要的。顺便说一下,您需要在代码中修复
dirname