Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python seaborn循环通过matplotlib散射的颜色_Python_Matplotlib_Seaborn - Fatal编程技术网

Python seaborn循环通过matplotlib散射的颜色

Python seaborn循环通过matplotlib散射的颜色,python,matplotlib,seaborn,Python,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使用哪种颜色。要使用se

在绘制散点图时,如何获得海生颜色

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))
确保我们不会用完颜色,并在使用最后一种颜色后再次开始使用第一种颜色

更新:

根据@Iceflower的评论,通过

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

也许是更好的解决办法。不同之处在于,我在顶部的原始答案尽可能频繁地迭代默认颜色,而此解决方案创建的调色板的颜色与文件的颜色一样多。这意味着没有重复的颜色,但颜色之间的差异可能非常细微。

根据卡斯滕的回答,如果您有大量类别可分配颜色,您可能希望将颜色压缩到非常大的seaborn调色板,例如or。。请注意,这种做法通常是:使用超过5-6种颜色通常是过度的,你可能需要考虑改变你的图表类型。
import matplotlib.pyplot as plt
import seaborn as sns

palette = zip(df['category'].unique(), sns.crayons.values())

这是一个“功能”,而不是一个“错误”,分散是一个ScalarMapable,这意味着您可以为每个标记指定一个标量值,然后与颜色贴图一起使用,根据标量值为每个标记着色。有鉴于此,让分散参与颜色循环逻辑似乎很愚蠢/太精细。作为旁注,除非您改变标记的大小,否则最好使用不带线的plot,这样会更快。感谢关于使用plot的提示:我不是说这是一个bug,只是问如何操作。最好使用sns.color\u paletteNone,lenfiles