Python 在DataFrame列上迭代以生成Matplotlib line plot
所以,我知道类似的问题也被贴出来了,但对我的具体案例来说还没有任何效果。我知道这可以通过Pandas plot函数来完成,但是这些线需要在Matplotlib图形上,这样它们就可以用散点和其他东西来绘制 我有这样一个数据帧:Python 在DataFrame列上迭代以生成Matplotlib line plot,python,pandas,dataframe,Python,Pandas,Dataframe,所以,我知道类似的问题也被贴出来了,但对我的具体案例来说还没有任何效果。我知道这可以通过Pandas plot函数来完成,但是这些线需要在Matplotlib图形上,这样它们就可以用散点和其他东西来绘制 我有这样一个数据帧: import matplotlib.pyplot as plt import pandas as pd import numpy as np lines = pd.DataFrame(columns=list('ABC')) lines.columns = ['T', '
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
lines = pd.DataFrame(columns=list('ABC'))
lines.columns = ['T', 'Line1', 'Line2']
lines['T'] = np.arange(0,100,0.1)
lines['Line1'] = np.cos(lines['T']) + 30
lines['Line2'] = np.sin(lines['T']) + 13
plt.figure()
plt.plot(lines['T'], lines['Line1'])
plt.plot(lines['T'], lines['Line2'])
plt.show()
for column in lines:
if column != 'T':
plt.plot(lines['T'], lines[column])
我想画一个有两条线的图,它们共享相同的X轴。我可以这样做:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
lines = pd.DataFrame(columns=list('ABC'))
lines.columns = ['T', 'Line1', 'Line2']
lines['T'] = np.arange(0,100,0.1)
lines['Line1'] = np.cos(lines['T']) + 30
lines['Line2'] = np.sin(lines['T']) + 13
plt.figure()
plt.plot(lines['T'], lines['Line1'])
plt.plot(lines['T'], lines['Line2'])
plt.show()
for column in lines:
if column != 'T':
plt.plot(lines['T'], lines[column])
这给了我:
但是,我想通过循环来实现。很抱歉,如果这个问题在其他地方得到了回答,但我找不到它。任何帮助都将不胜感激!谢谢。使用数据框的columns属性
line_cols = ["Line1", "Line2"]
plt.figure()
for l in line_cols:
plt.plot(lines['T'], lines[l])
plt.show()
plt.plot(lines[lines.columns[0]], lines[lines.columns[1:]])
或者就像广亨在评论中所说的那样:
lines.plot(x='T')
如果坚持使用循环,则可以执行以下操作:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
lines = pd.DataFrame(columns=list('ABC'))
lines.columns = ['T', 'Line1', 'Line2']
lines['T'] = np.arange(0,100,0.1)
lines['Line1'] = np.cos(lines['T']) + 30
lines['Line2'] = np.sin(lines['T']) + 13
plt.figure()
plt.plot(lines['T'], lines['Line1'])
plt.plot(lines['T'], lines['Line2'])
plt.show()
for column in lines:
if column != 'T':
plt.plot(lines['T'], lines[column])
你想用循环来做是什么意思?lines.plotx='T'?@QuangHoang这是一个很好的小技巧。@QuangHoang这应该是答案。如果你写的话,我会删除我的并投票you@KartikeyaSharma,似乎科迪确实希望根据他的评论绘制其余的专栏。这就是他想要一个循环的原因——这样他就不必一直添加。添加新列时的plot调用听上去不错,尽管我建议@QuangHoang的评论是一个更好的解决方案,但它更简单易读,即使它不包括您问题中最初要求的迭代