我有一个包含三列“主要成分 1”、“主要成分 2”和“类”的 pandas 数据框。类别列由 1(通过)或 0(失败)值组成。我绘制了主成分 1 与 2 的二维图,但我想选择通过和失败散点图的颜色。
这里 F2 是一个由“主成分 1”、“主成分 2”和“类”列组成的 DataFrame。
targets = [1, 0]
Class = ['Pass', 'Fail']
colors = ['k', 'r']
fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(1, 1, 1)
ax.set_xlabel('Principal Component 1', fontsize=15)
ax.set_ylabel('Principal Component 2', fontsize=15)
ax.set_title('2 component PCA', fontsize=20)
for target, color in zip(targets, colors):
indicesToKeep = F2['Class'] == target
sns.scatterplot(F2.loc[indicesToKeep, 'principal component 1'],
F2.loc[indicesToKeep, 'principal component 2'], c=color, alpha=0.85)
ax.legend(Class)
ax.grid()
plt.show()
如果我在散点图函数中包含c=color来设置,“通过”为黑色,“失败”为红色,则会出现以下错误
ValueError: 'c' 参数必须是颜色、颜色序列或数字序列,而不是数组('k', dtype='<U1')
如果我删除该seaborn,则会选择其默认颜色。
另外,我想将 seaborn 绘图背景设置为网格,但sns.set_style("darkgrid")
不起作用。
没有输入数据,很难为您提供帮助,但也许您可以尝试以下方法:
输出: