繁体   English   中英

x和y轴为文本时标注数据点 matplotlib

[英]Annotate data points when x and y axis is text matplotlib

我正在尝试注释 plot 上的数据点,如下所示

在此处输入图像描述

我无法 position 注释文本,使其位于数据点的右侧。 关于如何做到这一点的任何提示?

 group1=df.groupby(['Year','Olympics','Medal','Hometown'])['Event'].count() gr1_df=group1.reset_index() bronze_data=gr1_df[gr1_df['Medal']=='Bronze'] gold_data=gr1_df[gr1_df['Medal']=='Gold'] silver_data=gr1_df[gr1_df['Medal']=='Silver'] plt.figure(); plt.style.use('seaborn'); plt.plot(bronze_data['Medal'],bronze_data['Hometown'],'*',label='Bronze Medals',alpha=0.5,markersize=10); plt.plot(gold_data['Medal'],gold_data['Hometown'], 'o',label='Gold Medals',alpha=0.5,markersize=10); plt.plot(silver_data['Medal'],silver_data['Hometown'],'^',label='Silver Medals',alpha=0.5,markersize=10); plt.xlabel('Medal'); plt.ylabel('Hometown'); plt.legend(); count_data=gr1_df.groupby('Hometown')['Medal'].value_counts() count_data.columns=['Counts'] df2=pd.DataFrame(count_data) df2.columns=['Counts'] df2.reset_index(inplace=True) ax=plt.gca() for index, row in df2.iterrows(): ax.annotate(str(row['Counts']),xy=(row['Medal'],row['Hometown']),xytext=(row['Medal'],row['Hometown']),xycoords='data')

您必须使用 注释function 的xytexttextcoords坐标 arguments。 这是一个将数字写在点右侧的调用。

ax.annotate(str(row['Counts']),xy=(row['Medal'],row['Hometown']), xytext=(5,-3),textcoords='offset points')

种类

暂无
暂无

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

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