我正在尝试使用matplotlib制作一个灰度非常小的散点图。由于点密度,点数需要很小。问题是scatter()函数的标记似乎同时具有直线和填充。当标记很小时,只有线条可见,而不是填充,线条不是正确的颜色(它总是黑色)。
我可以使用gnuplot获得我想要的内容:使用点pt 0 lc rgb'bray'绘制'nodes'
如何使用matplotlib scatterplot()创建非常小的灰点?
答案 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 =