我确定我在这里搞砸了一些非常简单的东西,但似乎无法解决这个问题。我只是试图通过在数据帧中循环并重复调用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组有三种非常相似的蓝色,但是所有散点都有不同且看似无关的颜色,这些颜色在各组之间都不相同)
这里发生了什么?
答案 0 :(得分:1)
您可以使用pandas
ax
方法指定目标ax
并重复绘制单个轴中的多个列组# set random seed
np.random.seed(42)
fig, ax = plt.subplots()
for i,label in enumerate(df['Cat'].unique()):
# select subset of columns equal to a given label
df['X'] = df[df['Cat']==label]['x']
df['Y'] = df[df['Cat']==label]['y']
df.plot.scatter(x='X',y='Y',color=sns.color_palette("husl",3)[i],label=label,ax=ax)
ax.legend(loc=2)
。
try:
more = WebDriverWait(self.driver, 10,poll_frequency=2,ignored_exceptions=[ElementNotVisibleException, ElementNotSelectableException]).until(EC.element_to_be_clickable((By.Name, 'resourceModelTaxonomyTypeIds')))
except TimeoutException:
break
more.click()
答案 1 :(得分:1)
应该花费更多时间来减少最小的工作示例。事实证明问题在于sns.color_palette
的调用,它返回一个混淆(float,float,float)
的{{1}}元组,因为它显然将其中一个数字解释为alpha值。
通过替换
解决了这个问题scatter
带
color = sns.color_palette("husl",3)[i]
为alpha添加显式值。