Adding labels in x y scatter plot with seaborn

前端 未结 3 624
孤独总比滥情好
孤独总比滥情好 2020-11-30 07:36

I\'ve spent hours on trying to do what I thought was a simple task, which is to add labels onto an XY plot while using seaborn.

Here\'s my code

impor         


        
3条回答
  •  甜味超标
    2020-11-30 08:22

    Thanks to the 2 other answers, here is a function scatter_text that makes it possible to reuse these plots several times.

    import seaborn as sns
    import matplotlib.pyplot as plt
    
    def scatter_text(x, y, text_column, data, title, xlabel, ylabel):
        """Scatter plot with country codes on the x y coordinates
           Based on this answer: https://stackoverflow.com/a/54789170/2641825"""
        # Create the scatter plot
        p1 = sns.scatterplot(x, y, data=data, size = 8, legend=False)
        # Add text besides each point
        for line in range(0,data.shape[0]):
             p1.text(data[x][line]+0.01, data[y][line], 
                     data[text_column][line], horizontalalignment='left', 
                     size='medium', color='black', weight='semibold')
        # Set title and axis labels
        plt.title(title)
        plt.xlabel(xlabel)
        plt.ylabel(ylabel)
        return p1
    

    Use the function as follows:

    df_iris=sns.load_dataset("iris") 
    plt.figure(figsize=(20,10))
    scatter_text('sepal_length', 'sepal_width', 'species',
                 data = df_iris, 
                 title = 'Iris sepals', 
                 xlabel = 'Sepal Length (cm)',
                 ylabel = 'Sepal Width (cm)')
    

    See also this answer on how to have a function that returns a plot: https://stackoverflow.com/a/43926055/2641825

提交回复
热议问题