线图中数据点连接顺序错误。

8
我正在阅读一个pandas数据框,并尝试从中生成绘图。在绘图中,数据点似乎按照升序y值的顺序连接在一起,导致出现类似于以下的怪异之绘图: enter image description here 代码如下:
from pandas import DataFrame as df
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt

data = df.from_csv(...)

plt.plot(data['COL1'], data['COL2'])

任何关于如何修复连接点的顺序的建议(即按照从图中从左到右出现的顺序连接它们)?谢谢。
1个回答

7

COL1中的值的顺序是否与csv文件中的不同?

您可以先按COL1进行排序,然后在绘图之前添加以下内容:

data.sort('COL1', inplace=True)

1
谢谢 - 这确实有效。但是,是否有一种方法可以使用matplotlib的绘图功能来完成相同的操作,而不是操纵DataFrame本身?看起来应该有... - Lamps1829
1
我觉得不太可能,mpl是按照传递的数据绘制图表。由于您的COL1(显然)没有排序,它不会自动发生。Mpl确实有一个排序功能,参见“matplotlib.cbook.Sorter()”,但我认为它不如Pandas方便。您可以在不修改DataFrame的情况下即时对其进行排序:“plt.plot(data.sort('COL1')['COL1'], data.sort('COL1')['COL2'] )”。但是我建议提前对其进行排序,如果您不想修改原始数据,可以将其存储为不同的df。 - Rutger Kassies
我同意使用pandas的排序功能似乎比matplotlib的排序器更可取。谢谢! - Lamps1829
@RutgerKassies 感谢您的指引,matplotlib.cbook.Sorter() 在您不使用pandas时非常有用,或者可以使用简单的本地lambda sorted - gaborous

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接