将带有图例的python绘图简化为循环
有什么好办法可以把下面的代码简化成一个循环?重复的代码将达到数千个。e、 g.test-101.csv…test-2233.csv将带有图例的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
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
。