seaborn cycle through colours with matplotlib scatter

后端 未结 2 1417
说谎
说谎 2020-12-28 15:06

How can I get seaborn colors when doing a scatter plot?

import matplotlib.pyplot as plt
import seaborn as sns
ax=fig.add_subplot(111)
for f in files:
    ax.         


        
相关标签:
2条回答
  • 2020-12-28 15:18

    To build on Carsten's answer, if you have a large number of categories to assign colours to, you might wish to zip the colours to a very large seaborn palette, for example the xkcd_palette or crayon_palette.. Note that this practice is usually a chartjunk anti-pattern: using more than 5-6 colours is usually overkill, and you might need to consider changing your chart type.

    import matplotlib.pyplot as plt
    import seaborn as sns
    
    palette = zip(df['category'].unique(), sns.crayons.values())
    
    0 讨论(0)
  • 2020-12-28 15:36

    You have to tell matplotlib which color to use. To Use, for example, seaborn's default color palette:

    import matplotlib.pyplot as plt
    import seaborn as sns
    import itertools
    ax=fig.add_subplot(111)
    
    palette = itertools.cycle(sns.color_palette())
    
    for f in files:
        ax.scatter(args, color=next(palette))
    

    The itertools.cycle makes sure we don't run out of colors and start with the first one again after using the last one.

    Update:

    As per @Iceflower's comment, creating a custom color palette via

    palette = sns.color_palette(None, len(files))
    

    might be a better solution. The difference is that my original answer at the top iterates through the default colors as often as it has to, whereas this solution creates a palette with as much hues as there are files. That means that no color is repeated, but the difference between colors might be very subtle.

    0 讨论(0)
提交回复
热议问题