如何使用不同的边缘颜色绘制散点图

10
我想绘制一个散点图,其中没有填充颜色,但有不同的边缘颜色。换句话说,就是彩色的圆圈。
我以为在matplotlib的画廊中可以很容易找到解决方案,但令人惊讶的是我找不到。参数"edgecolors"不接受数组作为值。而且调整参数'c'对边缘颜色没有帮助,只能改变填充颜色。
这是我认为可能是解决方案的链接: https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.scatter.html enter image description here 页面末尾的演示图片似乎有彩色的边缘颜色!然后我下载了脚本并运行它: enter image description here 边缘仍然是黑色的。

我现在正在用其他方法来处理我的情节。(因为这不是一个大问题。这只是一个兴趣问题。)我只是想知道演示如何得到彩色的边缘。


我运行了示例脚本并得到了与文档相同的结果,我正在使用matplotlib 2.0.0和Python 3.5.1,你用的是哪个版本? - Vinícius Figueiredo
最简单的方法确实是将matplotlib更新到2.0版本,其中scatter edgecolor自动使用由“c”参数设置的颜色。 - ImportanceOfBeingErnest
1个回答

8

正如其他人所说,演示脚本获取彩色边缘的方法是matplotlib 2.0自动将散点图中的点的边缘颜色设置为提供的颜色参数。

然而,如果您想在不更新到mpl 2.0的情况下重新创建演示脚本的结果(尽管我建议这样做),您只需要向scatter行添加一个附加的关键字参数,如下所示:

plt.scatter(x, y, s=area, c=colors, alpha=0.5, edgecolors=colors)

为了完整起见,您可以通过伪装实现最初想法中的彩色圆形概念。您只需要将内部颜色更改为白色,即

plt.scatter(x, y, s=area, c='w', alpha=0.5, edgecolors=colors)

此外,在定义边缘颜色时,不能像演示脚本中所做的那样使用单个浮点数来定义颜色,因为它们正在为“c”参数使用。因此,您需要提供一个长度为N的颜色数组,例如['r','g','b'],或替换颜色的定义。
colors = np.random.random((N, p))

其中p为3或4,取决于您要在图中使用RGB还是RGBA颜色。这应该会产生类似以下绘图的结果:

不使用面部颜色和五颜六色的边缘生成的scatter_demo.py的输出


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