我在 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()
最佳答案
这不是错误,而是 IMO,matplotlib
的文档有点含糊。
标记的颜色,可以通过c
、color
、edgecolor
和facecolor
来定义。
c
在axes.py
中scatter()
的源码中。这相当于 facecolor
。使用c='r'
时,edgecolor
未定义,matplotlib.rcParams
中的默认值生效,有默认值k
(黑色)的值。
color
、edgecolor
和 facecolor
被传递给 collection.Collection
对象 scatter()
返回。正如您将在源代码 collections.py
中看到的(set_color()
、set_edgecolor()
和 set_facecolor()
方法),set_color()
基本上调用了 set_edgecolor
和 set_facecolor
,因此将这两个属性设置为相同的值。
我希望这些可以解释您在 OP 中描述的行为。在 c='red'
的情况下,边缘为黑色,表面颜色为红色。在 color=red
的情况下,面颜色和边颜色都是红色。
关于python - matplotlib 散点图的颜色参数是 `c` ,但是 `color` 也可以;产品。差异。结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24749215/