我确定我在这里弄乱了一些非常简单的东西,但似乎无法弄清楚。我只是试图通过循环遍历一个数据框并重复调用将数据组绘制为散点图,并对每个组使用不同的颜色ax.scatter
。一个最小的例子是:
import numpy as np; import pandas as pd; import matplotlib.pyplot as plt; import seaborn as sns
%matplotlib inline
df = pd.DataFrame({"Cat":list("AAABBBCCC"), "x":np.random.rand(9), "y":np.random.rand(9)})
fig, ax = plt.subplots()
for i,cat in enumerate(df.Cat.unique()):
print i, cat, sns.color_palette("husl",3)[i]
ax.scatter(df[df.Cat==cat].x.values, df[df.Cat==cat].y.values, marker="h",s=70,
label = cat, color=sns.color_palette("husl",3)[i])
ax.legend(loc=2)
我print
出于自己的理智而添加了此声明,以确认我确实是在各组中骑自行车并选择不同的颜色。但是,输出如下所示:
(如果很难看到这一点:根据图例,A,B和C组具有三种非常相似的蓝色,但是所有散点都具有不同且看似无关的颜色,甚至在各组之间也不相同)
这里发生了什么?
应该花更多的时间思考最小的工作示例。事实证明,问题出在对的调用上sns.color_palette
,该调用返回一个(float,float,float)
元组,该元组在将scatter
其中一个数字解释为Alpha值时感到困惑。
通过更换解决了问题
color = sns.color_palette("husl",3)[i]
和
color = sns.color_palette("husl",3)[i] + (1.,)
为alpha添加一个显式值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句