matplotlib中的小散点图标记总是黑色的

zoo*_*zoo 54 matplotlib

我正在尝试使用matplotlib制作一个灰度非常小的散点图.由于点密度,点数需要很小.问题是scatter()函数的标记似乎同时具有直线和填充.当标记很小时,只有线条可见,而不是填充,线条不是正确的颜色(它总是黑色).

我可以使用gnuplot获得我想要的内容:使用点pt 0 lc rgb'gray'绘制'nodes'

如何使用matplotlib scatterplot()制作非常小的灰点?

Daa*_*aan 70

scatter([1,2,3], [2,4,5], s=1, facecolor='0.5', lw = 0)
Run Code Online (Sandbox Code Playgroud)

这将markersize设置为1(s = 1),将facecolor设置为灰色(facecolor ='0.5'),将linewidth设置为0(lw = 0).

  • 这是有效的,但更常见的是将`edgecolor`设置为`''`,因为其他答案提到了. (7认同)
  • 实际上,在Matplotlib的更高版本中(与2011年提出问题的时候相比),您可以使用关键字"color"来同时设置edgecolor和facecolor.但是,此功能没有记录,建议用于折旧,并与"情节"的行为发生冲突,其中"颜色"仅设置线条颜色和填充颜色,但不设置边缘颜色. (2认同)

cyb*_*org 30

如果标记没有面(例如'+',不能填充'x'),则edgecolor必须设置而不是c,并且lw不应该是0:

scatter([1,2,3], [2,4,5], marker='+', edgecolor='r')
Run Code Online (Sandbox Code Playgroud)

以下将无效

scatter([1,2,3], [2,4,5], s=1,  marker='+', facecolor='0.5', lw = 0)
Run Code Online (Sandbox Code Playgroud)

因为边缘/线不会显示,所以不会显示任何内容.


小智 5

您的问题的绝对最简单的答案是:使用color参数而不是c参数来设置整个标记的颜色。

比较结果时很容易看出差异:

from matplotlib import pyplot as plt

plt.scatter([1,2,3], [3,1,2], c='0.8')  # marker not all gray

plt.scatter([1,2,3], [3,1,2], color='0.8')  # marker all gray
Run Code Online (Sandbox Code Playgroud)

详细信息: 对于您只想使整个标记具有相同的灰色阴影的简单用例,您实际上不必担心诸如面部颜色与边缘颜色之类的事情,以及您的标记是否被定义为所有边缘或者一些边缘和一些填充。相反,只需使用color参数并知道您的整个标记将设置为您指定的单一颜色!