我具有以下功能来绘制图形:
def plot_ATD(DataFrame):
#Initialise 225V ATD plot
fig = plt.figure()
ax = fig.add_subplot(111)
#take columns from data set and make to list which is passed to matplotlib to plot a graph
x = DataFrame['Arrival Time (ms)'].tolist()
y = DataFrame['Intensity'].tolist()
line, = ax.plot(x,y, 'r-')
#use numpy to get the max of Intensity, then determine the corresponding arrival time
ymax = np.max(y)
xpos = y.index(ymax)
xmax = x[xpos]
time = xmax
#add an annotation point at the maxima giving the arrival time at this position
# ax.annotate(s=text of annotation, xy=point to annotate, xytext=position to place text
# arrowprops=dict(facecolor=color of arrow))
ax.annotate(s=xmax, xy=(xmax, ymax), xytext=(xmax+5, ymax+5),
arrowprops=dict(facecolor='orange'),
)
#ax.set_ylim(0,600000)
ax.set_xlim(0,20)
plt.xlabel('Arrival time (ms)')
plt.title(DataFrame.name)
return plt.show()
我在以下熊猫DataFrames上使用它:
V100 = pd.read_csv('Documents/spreadsheets/Data/100V_9z.csv', names=['Arrival Time (ms)', 'Intensity'])
V125 = pd.read_csv('Documents/spreadsheets/Data/125V_9z.csv', names=['Arrival Time (ms)', 'Intensity'])
V150 = pd.read_csv('Documents/spreadsheets/Data/150V_9z.csv', names=['Arrival Time (ms)', 'Intensity'])
V175 = pd.read_csv('Documents/spreadsheets/Data/175V_9z.csv', names=['Arrival Time (ms)', 'Intensity'])
V200 = pd.read_csv('Documents/spreadsheets/Data/200V_9z.csv', names=['Arrival Time (ms)', 'Intensity'])
V225 = pd.read_csv('Documents/spreadsheets/Data/225V_9z.csv', names=['Arrival Time (ms)', 'Intensity'])
我想让图的标题为DataFrame的名称,即V100,V125等。
我不确定语法正确或如何执行此操作?请帮忙!
解决方法:
Vs= [v for v in locals() if v.startswith('V')]
for v in Vs:
plot(eval(v),title=v)
eval
创建变量(例如,使用系列(或字典))时,必须执行一种更简洁的方法(因为这是不安全的):
ser=pd.Series()
ser['V100'] = pd.read_csv('Documents/spreadsheets/Data/100V_9z.csv', \
names=['Arrival Time (ms)', 'Intensity'])
将简化工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句