大熊猫散点图,时间数据和点大小

时间:2018-06-05 08:10:39

标签: python pandas matplotlib

我的DataFrame看起来:

enter image description here

我用这段代码绘制它:

tmp['event_name'].plot(style='.', figsize=(20,10), grid=True)

结果看起来: enter image description here

我想更改点的大小(使用列详细信息)。 题: 我该怎么做? Plot没有参数大小,我不能使用plot.scatter(),因为我不能使用x轴的时间格式。

2 个答案:

答案 0 :(得分:2)

DataFrame.plot将任何未知关键字传递给Matplotlib.Artist,如链接文档中所述。因此,您可以使用常规matplotlib语法ms指定标记大小:

tmp['event_name'].plot(style='.', figsize=(20,10), grid=True, ms=5)

也就是说,您也可以将plt.scatter与时间戳一起使用,这样可以使用'详细信息'列作为标记大小更直接:

import matplotlib.pyplot as plt
import pandas as pd
data = {'time':       ['2015-01-01', '2015-01-02', '2015-01-03', '2015-01-04'],
        'event_name': [2, 2, 2, 2],
        'details':    [46, 16, 1, 7]}
df = pd.DataFrame(data)
dates = [pd.to_datetime(date) for date in df.time]
plt.scatter(dates, df.event_name, s=df.details)
plt.show()

答案 1 :(得分:0)

您可以尝试:

for index, i in enumerate(df['details']):
    plt.plot(df.index[index], df.iloc[index]['event_name'], marker='.', linestyle='None', markersize=i*4, color='b')
plt.show()

示例:

import matplotlib.pyplot as plt
import pandas as pd
df = {'time': ['2015-01-01','2015-01-02','2015-01-03', '2015-01-04', '2015-01-05'],'event_name': [2,2,2,2,2], 'details':[46,16,1,7,4]}
df = pd.DataFrame(data=df)
df['time'] = pd.to_datetime(df['time'], format='%Y-%m-%d')
df = df.set_index('time')

DF:

                details  event_name
time                           
2015-01-01       46           2
2015-01-02       16           2
2015-01-03        1           2
2015-01-04        7           2
2015-01-05        4           2

输出:

enter image description here