首页 > 解决方案 > 更改 matplotlib 散点图的默认边缘颜色

问题描述

我正在寻找一种方法来更改matplotlib 散点图的默认边缘颜色。通常,这样的事情会通过 设置rcParams,我的理解是我应该设置patch.edgecolor。但是,这似乎不起作用。这是一个例子:

import numpy as np
from matplotlib import pyplot as plt

x = np.random.randn(50)
y = np.random.randn(50)

with plt.rc_context({'patch.edgecolor': 'white'}):
    plt.subplot(121)
    plt.scatter(x, y)

plt.subplot(122)
plt.scatter(x, y, edgecolors='white')

结果,我希望两个子图看起来相同,但它们看起来像这样: 我想看的 请注意,我不想更改with语句中的代码,而是配置 matplotlib 使其使用白色边缘作为后备如果我不指定其他任何内容。令人困惑的是,文档在函数签名中使用了默认参数edgecolors=None,但声明默认值为edgecolorsis 'face'。我怎样才能改变这种行为?

标签: pythonmatplotlib

解决方案


您正在寻找的 rc 参数称为

'scatter.edgecolors'

例如 plt.rcParams['scatter.edgecolors'] = "white"
with plt.rc_context({'scatter.edgecolors': 'white'}):

这是#12992中引入的新功能,可从matplotlib 3.1开始使用,该功能将很快发布。到今天为止,您可以通过安装候选版本pip install --pre --upgrade matplotlib来获得此功能。


推荐阅读