旋转标记注释

问题描述 投票:0回答:2

我想为每个

(x,y)
散点图点旋转文本/标签。

这是我的数据框:

import pandas as pd
import seaborn sns 

df1 = pd.DataFrame({"one": [1,2,3,5,6,7,8],
                   "two": [3,6,4,3,8,2,5],
                   "label":['a','b','c','d','e','f','g']})

ax = sns.scatterplot(x='one', y='two', data = df1)

for line in range(0,df1.shape[0]):
    ax.text(df1.one[line]+0.04, 
            df1.two[line], 
            df1.label[line], horizontalalignment='left', 
            size='medium', color='black', weight='semibold')

我想将标签旋转到 45,以便它们可见/清晰。

python matplotlib seaborn scatter-plot plot-annotations
2个回答
3
投票

使用此代码旋转图形上的标签

df1 = pd.DataFrame({"one": [1,2,3,5,6,7,8],
                   "two": [3,6,4,3,8,2,5],
                   "label":['a','b','c','d','e','f','g']})
ax=sns.scatterplot(x='one', y='two', data = df1)

a=pd.concat({"x":df1["one"],"y":df1["two"],"lab":df1["label"]},axis=1)
for i ,point in a.iterrows():
    ax.text(point['x'],point['y'],str(point['lab'])).set_rotation(45)


1
投票

以下会做:

plt.figure(figsize=(10,10))
p1 = sns.scatterplot(x='one', y='two', data=df1, legend=False)  

for i in range(0,df1.shape[0]):
    p1.text(df1.one[i]+0.04, df1.two[i], 
    df1.label[i], horizontalalignment='left', 
    size='medium', color='black', weight='semibold')

plt.title('Example Plot')
plt.xlabel('One')
plt.ylabel('Two')

© www.soinside.com 2019 - 2024. All rights reserved.