Matplotlib - 散点图中的边框问题

37

我正在按照这篇教程进行学习。

我想使用Matplotlib创建一个散点图,内部有颜色,但边框是黑色的,就像这张图片:

photo

然而,当我复制了代码后,我得到的却是这样的图表。

enter image description here

以下是代码:

colors = ['black', 'blue', 'purple', 'yellow', 'white', 'red', 'lime', 'cyan', 'orange', 'gray']
for i in range(len(colors)):
    x = reduced_data_rpca[:, 0][digits.target == i]
    y = reduced_data_rpca[:, 1][digits.target == i]
    plt.scatter(x, y, c=colors[i])
plt.legend(digits.target_names, bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
plt.xlabel('First Principal Component')
plt.ylabel('Second Principal Component')
plt.title("PCA Scatter Plot")
plt.show()

我尝试调整样式,但那没什么帮助。


2
如果我猜的话,marker='o' 但你没有提供可运行的示例。 - roganjosh
6
你希望使用edgecolors="black"这个参数。 - Mr. T
1个回答

61
当你使用散点图时,你需要为其边缘和填充区域分别设置颜色。在官方文档中,你可以找到一个额外的参数 edgecolors,用于设置边缘颜色。
引用如下: edgecolors:颜色或颜色序列,可选,默认值为None 如果是None,则默认为“face” 如果是“face”,边缘颜色将始终与填充颜色相同。 如果是“none”,则不会绘制补丁边界。 对于非填充标记,将忽略edgecolors kwarg并在内部强制为“face”。
因此,最终您只需要plt.scatter(x, y, c=colors[i],edgecolors='black')

12
对于像我这样需要有非透明边框的透明点的人。结合 edgecolor='b'color='none' - Mitchell van Zuylen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接