用Python Pandas绘制数据点并省略线条

6

如何使用Python/ matplotlib只绘制数据点而省略线条。

以下是目前的代码示例:

  import matplotlib.pyplot as plt
  import pandas as pd

  df = pd.DataFrame({'x': [1,2,-3,3,5,7,-1],
                   'y' : [2.6,3.4,3.25,2.8,1.75,1.34,-3.345]})
  df.plot(x='x', y='y')
  plt.grid(True)
  plt.show()

非常感谢您的帮助和评论。

到目前为止,我已经尝试了一些方法,

df.plot.scatter(x='x', y='y')

但对于我的实际应用程序,似乎存在问题,所以我想知道是否存在另一种绘制数据点的方法。

正如有人指出的那样,我应该谈谈这个问题。所以我使用 df = pd.read_csv(...) 来获取我的数据。由于某些原因,df.plot.scatter (...) 没有起作用。我总是得到“不在索引中”的错误。所以当我尝试这里提到的任何解决方案时,我没有遇到同样的问题。 坦率地说,我不知道为什么一开始会有问题。尽管如此,我还是希望至少提及一下这个问题。

4个回答

12

您可以在plt.plot中使用参数markerlinestyle。您可以尝试不同的标记(marker),但如果您想要省略线条,linestyle='none' 在这里是至关重要的。

plt.plot(df.x, df.y, marker='.', linestyle='none')

谢谢你也。 - sulphur
当然,使用我的原始数据时,我无法使用scatter,总是出现“不在索引中”的错误。我通过Python Panda读取了一个csv文件。现在有了答案,它可以工作了。我不确定为什么df.plot.scatter在我的情况下无法工作。 - sulphur
@Alexander - 已编辑,不过我认为它本来就很容易理解了 :) - Piotrek

3
在pandas plot中使用参数kind='scatter',如下所示的代码:
import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({'x': [1,2,-3,3,5,7,-1],
                   'y' : [2.6,3.4,3.25,2.8,1.75,1.34,-3.345]})
df.plot(x='x', y='y', kind='scatter')
plt.grid(True)
plt.show()

输出:

输入图像描述


谢谢大家提供的好答案,它们都很有效。非常感谢。 - sulphur

0

或者替换最后三行

df.plot(x='x', y='y')
plt.grid(True)
plt.show()

作者:

plt.scatter(x=df.x.tolist(), y=df.y.tolist())
plt.grid(True)
plt.show()

最后但同样重要的是你。 - sulphur

0
至少截至今天,df.plot()接受matplotlib.plot参数作为关键字参数。因此,您可以简单地执行`df.plot(linestyle='none',marker='.')`以获得所需的行为。
编码愉快!

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