繁体   English   中英

熊猫数据点的线图

[英]Line plot with data points in pandas

使用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();

在此处输入图片说明

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

在此处输入图片说明

这个 matplotlib 示例似乎暗示了方向,但我找不到如何使用 Pandas 绘图功能来做到这一点。 而且我对学习如何使用熊猫特别感兴趣,因为我一直在使用数据框。

有什么线索吗?

您可以在df.plot命令中使用 kwarg style 文档

风格:列表或字典

每列的 matplotlib 线条样式

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

例如,这与您要求的类似:

df.plot(style='.-')

在此处输入图片说明

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

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

在此处输入图片说明

您还可以将markevery 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()

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM