我偶然在matplotlib的散点图中使用color而不是c作为颜色参数(c在文档中列出).它工作,但结果是不同的:默认情况下边缘颜色消失了.现在,我想知道这是否是期望的行为,以及这是如何以及为什么这样做...

import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots(nrows=2, ncols=2, figsize=(10,10))
samples = np.random.randn(30,2)
ax[0][0].scatter(samples[:,0], samples[:,1],
color='red',
label='color="red"')
ax[1][0].scatter(samples[:,0], samples[:,1],
c='red',
label='c="red"')
ax[0][1].scatter(samples[:,0], samples[:,1],
edgecolor='white',
c='red',
label='c="red", edgecolor="white"')
ax[1][1].scatter(samples[:,0], samples[:,1],
edgecolor='0',
c='1',
label='color="1.0", edgecolor="0"')
for row in ax:
for col in row:
col.legend(loc='upper left')
plt.show()
Run Code Online (Sandbox Code Playgroud)
这不是一个错误,但在我看来,matplotlib的文档有点含糊不清。
标记的颜色可以通过c、color和edgecolor来定义facecolor。
cscatter()位于的源代码中axes.py。这相当于facecolor. 当您使用c='r', 时,edgecolor未定义,默认值matplotlib.rcParams生效,默认值为k(黑色)。
color,edgecolor并且facecolor被传递给collection.Collection对象scatter()返回。正如您将在源代码collections.py(set_color()和方法)中看到的那样,基本上调用和,因此将两个属性设置set_edgecolor()为相同的值。set_facecolor()set_color()set_edgecolorset_facecolor
我希望这些能够解释您在OP中描述的行为。c='red'在边缘为黑色且面部颜色为红色的情况下。在 的情况下color=red,面颜色和边缘颜色均为红色。
| 归档时间: |
|
| 查看次数: |
2454 次 |
| 最近记录: |