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

时间:2011-06-28 07:46:45

标签: matplotlib

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

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

如何使用matplotlib scatterplot()创建非常小的灰点?

4 个答案:

答案 0 :(得分:70)

scatter([1,2,3], [2,4,5], s=1, facecolor='0.5', lw = 0)

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

答案 1 :(得分:30)

如果标记没有面(无法填充,例如'+''x'),则必须设置edgecolor而不是c和{{ 1}}不应该是lw

0

以下将无效

scatter([1,2,3], [2,4,5], marker='+', edgecolor='r')

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

答案 2 :(得分:3)

您问题的绝对最简单的答案是:使用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

<强>详细信息: 对于您只想让整个标记与灰色相同的简单用例,您真的不必担心面部颜色与边缘颜色等问题,以及您的标记是否定义为所有边缘或某些边缘边缘和一些填充。相反,只需使用color参数,并知道您的整个标记将设置为您指定的单一颜色!

答案 3 :(得分:1)

回应zwol的评论问题 - 我的声誉不足以留下评论,所以这必须做:如果您的颜色来自色彩图(即,来自“值序列”)映射“)您可以使用booksSortedIdArray,如下所示:

color =