seaborn 使用 matplotlib scatter 循环显示颜色
seaborn cycle through colours with matplotlib scatter
如何在绘制散点图时获得 seaborn 颜色?
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
你必须告诉 matplotlib 使用哪种颜色。例如,使用 seaborn 的默认调色板:
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))
itertools.cycle
确保我们不会 运行 颜色不对,并在使用最后一个后再次从第一个开始。
更新:
根据@Iceflower 的评论,通过
创建自定义调色板
palette = sns.color_palette(None, len(files))
可能是更好的解决方案。不同之处在于,我在顶部的原始答案会尽可能频繁地遍历默认颜色,而此解决方案创建的调色板具有与文件一样多的色调。这意味着没有颜色重复,但颜色之间的差异可能非常细微。
以 Carsten 的回答为基础,如果您有大量类别要分配颜色,您可能希望将颜色压缩到一个非常大的 seaborn 调色板中,例如 xkcd_palette
or crayon_palette
.. Note that this practice is usually a chartjunk anti-pattern:使用超过5-6 种颜色通常有点矫枉过正,您可能需要考虑更改图表类型。
import matplotlib.pyplot as plt
import seaborn as sns
palette = zip(df['category'].unique(), sns.crayons.values())
如何在绘制散点图时获得 seaborn 颜色?
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
你必须告诉 matplotlib 使用哪种颜色。例如,使用 seaborn 的默认调色板:
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))
itertools.cycle
确保我们不会 运行 颜色不对,并在使用最后一个后再次从第一个开始。
更新:
根据@Iceflower 的评论,通过
创建自定义调色板palette = sns.color_palette(None, len(files))
可能是更好的解决方案。不同之处在于,我在顶部的原始答案会尽可能频繁地遍历默认颜色,而此解决方案创建的调色板具有与文件一样多的色调。这意味着没有颜色重复,但颜色之间的差异可能非常细微。
以 Carsten 的回答为基础,如果您有大量类别要分配颜色,您可能希望将颜色压缩到一个非常大的 seaborn 调色板中,例如 xkcd_palette
or crayon_palette
.. Note that this practice is usually a chartjunk anti-pattern:使用超过5-6 种颜色通常有点矫枉过正,您可能需要考虑更改图表类型。
import matplotlib.pyplot as plt
import seaborn as sns
palette = zip(df['category'].unique(), sns.crayons.values())