Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python matplotlib';s散射是'c',但'color'也适用;生产差异结果_Python_Matplotlib - Fatal编程技术网

Python matplotlib';s散射是'c',但'color'也适用;生产差异结果

Python matplotlib';s散射是'c',但'color'也适用;生产差异结果,python,matplotlib,Python,Matplotlib,我无意中使用了color而不是c作为matplotlib散点图中的颜色参数(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].

我无意中使用了
color
而不是
c
作为matplotlib散点图中的颜色参数(
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()


这不是一个bug,但在我看来,
matplotlib
的文档有点含糊不清

标记的颜色可以由
c
color
edgecolor
facecolor
定义

c
位于
axes.py中的
scatter()
的源代码中。这相当于
facecolor
。使用
c='r'
时,
edgecolor
未定义,并且
matplotlib.rcParams
中的默认值生效,默认值为
k
(黑色)

color
edgecolor
facecolor
被传递到
集合。集合
对象
scatter()
返回。正如您将在源代码
collections.py
set\u color()
set\u edgecolor()
set\u facecolor()
方法)中看到的,
set\u color()
基本上调用
set\u edgecolor
set\u facecolor>,因此将这两个属性设置为相同的值


我希望这些可以解释你在OP中描述的行为。在
c='red'
的情况下,边缘是黑色,面部颜色是红色。在
color=red
的情况下,面部颜色和边缘颜色都是红色的。

非常好的解释!谢谢+同样值得一提的是,
c
facecolor
并不完全等同。
c
参数意味着(除其他外)允许将标记的颜色映射到一个值数组,而
facecolor
color
,等等,不允许这样做。嗨,@JoeKington,事实上在新版本(>1.3.1)中不再是这种情况,在OP中的示例中,您现在可以传递,例如,
facecolor=matplotlib.cm.jet(示例)[:,1,:]
c=matplotlib.cm.jet(示例)[:,1,:]
以获得一袋彩色点。干杯