通过matplotlib分散颜色的seaborn循环散点图
问题描述:
如何在散点图上获得seaborn颜色?通过matplotlib分散颜色的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
确保我们不会跑出来的颜色,并使用最后一个后再次以第一个开始。
答
要建立在Carsten的答案上,如果您有大量类别分配颜色,您可能希望将颜色压缩到非常大的seaborn调色板,例如xkcd_palette
或crayon_palette
。请注意,此练习是通常是a chartjunk anti-pattern:使用超过5-6种颜色通常是矫枉过正的,您可能需要考虑更改图表类型。
import matplotlib.pyplot as plt
import seaborn as sns
palette = zip(df['category'].unique(), sns.crayons.values())
这是一个“功能”,而不是一个“错误”'scatter'是一个'ScalarMappable'这意味着可以分配一个标量值,这将不是被用于(与彩色地图一起),每个标记根据标量值为每个标记着色。鉴于此,具有'散布'参与颜色循环逻辑看起来很愚蠢/太过分。作为一个侧面说明,除非你改变了标记的大小,否则最好在没有行的情况下使用'plot'(它会更快)。 – tacaswell 2015-02-11 04:58:06
感谢关于使用情节的提示:)我并不是说这是一个错误,只是问如何去做。 – amn41 2015-02-11 11:48:38