seaborn cycle through colours with matplotlib scat

2020-02-24 13:08发布

问题:

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.scatter(args) # all datasets end up same colour
    #plt.plot(args) #  cycles through palette correctly

回答1:

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.



回答2:

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