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

2024-04-19 19:59:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在下图中标注数据点

enter image description here

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

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')

Tags: dfdataindexsilverplotcountpltlabel
1条回答
网友
1楼 · 发布于 2024-04-19 19:59:26

您必须使用annotate函数的xytexttextcoords参数。下面是一个将数字写入点右侧的调用

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

亲切的

相关问题 更多 >