Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.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 在DataFrame列上迭代以生成Matplotlib line plot_Python_Pandas_Dataframe - Fatal编程技术网

Python 在DataFrame列上迭代以生成Matplotlib line plot

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', '

所以,我知道类似的问题也被贴出来了,但对我的具体案例来说还没有任何效果。我知道这可以通过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', '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的评论是一个更好的解决方案,但它更简单易读,即使它不包括您问题中最初要求的迭代