我的DataFrame看起来:
我用这段代码绘制它:
tmp['event_name'].plot(style='.', figsize=(20,10), grid=True)
我想更改点的大小(使用列详细信息)。 题: 我该怎么做? Plot没有参数大小,我不能使用plot.scatter(),因为我不能使用x轴的时间格式。
答案 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
输出: