Python 带数据点的熊猫线图

Python 带数据点的熊猫线图,python,pandas,matplotlib,Python,Pandas,Matplotlib,使用pandas我可以轻松绘制线条图: import pandas as pd import numpy as np %matplotlib inline # to use it in jupyter notebooks df = pd.DataFrame(np.random.randn(50, 4), index=pd.date_range('1/1/2000', periods=50), columns=list('ABCD')) df = df.cumsum() df.

使用
pandas
我可以轻松绘制线条图:

import pandas as pd
import numpy as np
%matplotlib inline # to use it in jupyter notebooks

df = pd.DataFrame(np.random.randn(50, 4), 
        index=pd.date_range('1/1/2000', periods=50), columns=list('ABCD'))
df = df.cumsum()
df.plot();

但我不知道如何也将数据绘制为线上的点,如本例所示:

似乎建议了方向,但我找不到如何使用熊猫绘图功能。我对学习如何使用熊猫特别感兴趣,因为我总是使用数据帧


有什么线索吗?

您可以使用
样式
kwarg来执行命令。从:

样式:列表或dict

每列的matplotlib线条样式

因此,您可以为所有线条设置一种线型,也可以为每条线条设置不同的线型

e、 g.这与您要求的类似:

df.plot(style='.-')

要为每条线定义不同的标记和线型,可以使用列表:

df.plot(style=['+-','o-','.--','s:'])

您还可以将kwarg传递到
matplotlib
的plot命令,以便仅以给定的间隔绘制标记

df.plot(style='.-', markevery=5)

您可以在
df.plot()
中使用
markevery
参数,如下所示:

df = pd.DataFrame(np.random.randn(1000, 4), index=pd.date_range('1/1/2000', periods=1000), columns=list('ABCD'))
df = df.cumsum()

df.plot(linestyle='-', markevery=100, marker='o', markerfacecolor='black')

plt.show()

markevery
将接受一个特定点(或日期)的列表,如果这是您想要的

您还可以定义一个函数来帮助查找正确的位置:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(np.random.randn(1000, 4), index=pd.date_range('1/1/2000', periods=1000), columns=list('ABCD'))
df = df.cumsum()

dates = ["2001-01-01","2002-01-01","2001-06-01","2001-11-11","2001-09-01"]
def find_loc(df, dates):
    marks = []
    for date in dates:
        marks.append(df.index.get_loc(date))
    return marks


df.plot(linestyle='-', markevery=find_loc(df, dates), marker='o', markerfacecolor='black')

plt.show()

太棒了,非常整洁!非常感谢。也有可能使这些圆点很快,所以如果你像磁铁一样悬停在它们上面,你可以看到确切的值吗?谢谢!我选择了另一个,只是因为它一步一步地解释。非常感谢。@lincolnfrias没问题!我只是想确保你注意到我的编辑!=)请检查我答案中的编辑,如果你正在努力为某些日期设置正确的点,这可能会非常有用。非常好,@ViníciusAguiar,非常好的提示。