我的数据框的列包含多个点的x,y坐标。一行可以包含几个点。 我试图找到一种简单的方法,能够在每个点之间绘制线条,为每行数据生成一条曲线。
这是一个简化的例子,其中两行分别由两个点表示。
line1 = {'p1_x':1, 'p1_y':10, 'p2_x':2, 'p2_y':11 }
line2 = {'p1_x':2, 'p1_y':9, 'p2_x':3, 'p2_y':12 }
df = pd.DataFrame([line1,line2])
df.plot(y=['p1_y','p2_y'], x=['p1_x','p2_x'])
当试图绘制它们时,我希望第1行从x = 1开始,第2行从x = 2开始。 相反,x轴包含两个值对(1,2)和(2,3),并且两条线在x轴上具有相同的起点和终点。
如何解决这个问题?
编辑: 如果使用matplotlib,以下硬编码值将生成我感兴趣的图 plt.plot([[1,2],[2,3]],[[10,9],[11,12]])
答案 0 :(得分:1)
虽然我确信使用纯大熊猫应该有更简洁的方法,但这是使用matplotlib
和原始df
的一些衍生物的简单方法。(我希望我能正确理解这个问题) )
假设:在df
中,您将x
值放在偶数列中,将y
值放在奇数列中
获取x
值
x = df.loc[:, df.columns[::2]]
x
p1_x p2_x
0 1 2
1 2 3
获取y
值
y = df.loc[:, df.columns[1::2]]
y
p1_y p2_y
0 10 11
1 9 12
然后使用for循环绘制
for i in range(len(df)):
plt.plot(x.iloc[i,:], y.iloc[i,:])
答案 1 :(得分:0)
我通常不使用pandas绘图,因为我觉得它相当有限,如果使用matplotlib不是问题,下面的代码可以工作:
from matplotlib import pyplot as plt
plt.plot(df.p1_x,df.p1_y)
plt.plot(df.p2_x,df.p2_y)
plt.plot()
如果有很多线要绘制,你可以使用for循环。