【问题标题】:Seaborn scatter plot: Rotate labels / textSeaborn 散点图:旋转标签/文本
【发布时间】:2021-10-06 11:36:00
【问题描述】:

我想为每个 (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,以便它们可见/清晰。

【问题讨论】:

  • 在 for 循环中的 ax.text() 方法中传递 rotation='45'
  • rotation=45(无引号)
  • 您是否尝试过在ax.text() 中传递旋转参数?.....是的,您可以将值作为整数或字符串传递,它不会影响结果跨度>

标签: python pandas matplotlib seaborn


【解决方案1】:

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

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)

【讨论】:

  • ax.text(point['x'],point['y'], str(point['lab']), rotation=45)
【解决方案2】:

以下方法可以做到:

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

【讨论】:

    猜你喜欢
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 2018-11-09
    • 2019-08-04
    • 2021-01-29
    • 2020-12-04
    相关资源
    最近更新 更多