我有下面的pandas数据框,其中包含一些事件和计数,我希望在图表中绘制和注释事件详细信息:
Date Time Time Zone Currency Event Importance Actual Forecast PrevIoUs Count Volume
DateTime
2014-04-09 00:30:00 Wed Apr 9 00:30 GMT aud AUD Westpac Consumer Confidence Medium 0.3% NaN -0.7% 198 7739
2014-04-09 00:30:00 Wed Apr 9 00:30 GMT aud AUD Westpac Consumer Conf Index Low 99.7 NaN 99.5 198 7279
2014-04-09 01:30:00 Wed Apr 9 01:30 GMT aud AUD Investment Lending Low 4.4% NaN -3.7% 172 21297
2014-04-09 01:30:00 Wed Apr 9 01:30 GMT aud AUD Home Loans Medium 2.3% 1.5% 0.0% 172 22197
2014-04-09 01:30:00 Wed Apr 9 01:30 GMT aud AUD Value of Loans (MoM) Low 1.9% NaN 1.6% 172 22197
我正在使用以下代码绘制数据帧(df):
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
temp=df[df['Count'].notnull()]
#temp=temp[temp['Importance']=="High"]
x = temp.index
y = temp.Count
z = temp.Event
g = temp.Importance
v = temp.Volume
fig, ax = plt.subplots(figsize=(15,8))
ax.plot_date(x, y, linestyle='--')
for i in range(len(x)):
if g[i]=="Medium":
ax.annotate(z[i]+' '+'Volume: '+str(v[i]), (mdates.date2num(x[i]), y[i]), xytext=(15, 15),
textcoords='offset points', arrowprops=dict(arrowstyle='-|>'))
fig.autofmt_xdate()
plt.show()
由于数据框包含重复 – 日期时间 – 索引,带注释的文本将以重叠的方式出现:
有没有更好的显示方式?
可能的方法:
我想通过随机化xytext值来设法得到一个好的情节
ax.annotate(z[i]+' '+'Volume: '+str(v[i]), (mdates.date2num(x[i]), y[i]), xytext=(5+randint(1,50), 5+randint(1,50)),
textcoords='offset points', arrowprops=dict(arrowstyle='-|>'), rotation=0)
解决方法:
您似乎可以通过旋转注释文本来解决重叠注释.这可以通过添加’rotation = 90’来完成
ax.annotate(z[i]+' '+'Volume: '+str(v[i]), (mdates.date2num(x[i]), y[i]), xytext=(15, 15),
textcoords='offset points', arrowprops=dict(arrowstyle='-|>'), rotation=90)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。