将颜色分配/映射到Seaborn.regplot中的点(Python 3)

O.r*_*rka 3 python matplotlib pandas seaborn

我有一个seaborn我想要用颜色注释的情节(最好是带有图例以及颜色映射).我看到regplot有一个color方法.我不知道怎么用这个.

我设置了我尝试了几种不同的方法,通过给color方法一个字典来映射{index : color},甚至将颜色值添加到数据帧本身.

如何用我指定的颜色映射点?

np.random.seed(0)

# Create dataframe
DF_0 = pd.DataFrame(np.random.random((100,2)), columns=["x","y"])

# Label to colors
D_idx_color = {**dict(zip(range(0,25), ["#91FF61"]*25)),
               **dict(zip(range(25,50), ["#BA61FF"]*25)),
               **dict(zip(range(50,75), ["#91FF61"]*25)),
               **dict(zip(range(75,100), ["#BA61FF"]*25))}
DF_0["color"] = pd.Series(list(D_idx_color.values()), index=list(D_idx_color.keys()))

# Plot
sns.regplot(data=DF_0, x="x", y="y") #works, plot below

# sns.regplot(data=DF_0, x="x", y="y", color="color") # doesn't work
# ValueError: to_rgb: Invalid rgb arg "color"
# could not convert string to float: 'color'

# sns.regplot(data=DF_0, x="x", y="y", color=DF_0["color"]) # doesn't work
# ValueError: to_rgb: Invalid rgb arg "('#91FF61', '#91FF61', ...

# sns.regplot(data=DF_0, x="x", y="y", color=D_idx_color) # doesn't work
# ValueError: to_rgb: Invalid rgb arg "(0, 1, 2, ...
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Ser*_*ity 5

用途scatter_kws:

import pandas as pd
import numpy as np
import matplotlib.pylab as plt
import seaborn as sns

np.random.seed(0)

# Create dataframe
DF_0 = pd.DataFrame(np.random.random((100,2)), columns=["x","y"])
DF_0['color'] =  ["#91FF61"]*25 + ["#BA61FF"]*25 + ["#91FF61"]*25 + ["#BA61FF"]*25
#print DF_0

sns.regplot(data=DF_0, x="x", y="y", scatter_kws={'c':DF_0['color']})
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 这不再起作用了。Seaborn 抛出错误“提供 'c' 参数或 'color' kwarg,但不能同时提供两者;它们不同,但功能重叠。 (4认同)
  • 现在,您需要使用“color”关键字并提供颜色列表:“sns.regplot(data=DF_0, x="x", y="y", scatter_kws={'color': list(DF_0['颜色'].values)})`。 (2认同)