如何在matplotlib中使用不同的edgecolor进行散点图?

时间:2017-07-21 22:18:02

标签: python matplotlib plot

我希望用 no facecolors 绘制散点图,但使用不同的edgecolors 。换句话说,彩色圆圈。

我以为我可以在matplotlib画廊中轻松找到解决方案,但令人惊讶的是我做不到。参数“edgecolors”不接受数组作为值。并且操纵参数'c'对边缘颜色没有帮助,但是面部颜色。

以下是我认为可以解决的链接: https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.scatter.html enter image description here

页面末尾的演示图片似乎有多彩的边缘颜色!然后我下载脚本并运行它: enter image description here

边缘仍然是黑色的。

我现在以其他方式做我的情节。 (因为这不是一个大问题。这只是一个有趣的问题。)我只是想知道演示是如何获得丰富多彩的边缘。

1 个答案:

答案 0 :(得分:1)

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

但是,如果您想重新创建演示脚本的结果而不更新到mpl 2.0(尽管我推荐它),您只需要在散点图行中添加一个额外的关键字参数,如下所示

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)

此外,您不能使用单个float来定义edgecolors的颜色,因为它们正在为演示脚本中的'c'参数执行,因此您需要提供长度 N 这些都是指定的颜色,例如['r','g','b'],或用

替换颜色的定义
colors = np.random.random((N, p))

其中 p 为3或4,具体取决于您是否需要绘图中的RGB或RGBA颜色。这应该产生如下图

Output from scatter_demo.py with no face colour and colourful edges