我正在尝试使用matplotlib来制作一个带有非常小的灰色点的散点图。由于点密度的原因,点需要很小。问题是scatter()函数的标记似乎既有一条线,又有一个填充。当标记很小时,只有线条可见,而不是填充,并且线条的颜色不正确(始终是黑色)。
我可以使用gnuplot精确地得到我想要的东西:使用pt 0 lc rgb 'gray‘绘制节点’
如何使用matplotlib散点图()制作非常小的灰色点?
发布于 2011-06-28 20:00:23
scatter([1,2,3], [2,4,5], s=1, facecolor='0.5', lw = 0)
这会将标记大小设置为1 (s=1),将面颜色设置为灰色( facecolor ='0.5'),并将线宽设置为0 (lw=0)。
发布于 2011-10-24 17:30:15
如果标记没有面(不能填充,例如'+'
、'x'
),则必须设置edgecolor
而不是c
,并且lw
不应为0
scatter([1,2,3], [2,4,5], marker='+', edgecolor='r')
下面的代码将不起作用
scatter([1,2,3], [2,4,5], s=1, marker='+', facecolor='0.5', lw = 0)
因为不会显示边/线,所以不会显示任何内容。
发布于 2016-12-30 09:21:22
为了回答zwol在评论中的问题--我的声誉不足以留下评论,所以这将不得不这样做:如果你的颜色来自色彩映射表(即,来自“要映射的值序列”),你可以使用color =
,如下所示:
from matplotlib import pyplot
x = [1,5,8,9,5]
y = [4,2,4,7,9]
numSides = [2,3,1,1,5]
cmap = pyplot.cm.get_cmap("copper_r")
min, max = min(numSides), max(numSides)
for i in range(len(x)):
if numSides[i] >= 2:
cax = pyplot.scatter(x[i], y[i], marker = '+', s = 100, c = numSides[i], cmap = cmap)
cax.set_clim(min, max)
elif numSides[i] == 1:
pyplot.scatter(x[i], y[i], marker = '.', s = 40, color = cmap(numSides[i]))
fig = pyplot.gcf()
fig.set_size_inches(8.4, 6)
fig.savefig('figure_test.png', dpi = 200)
pyplot.show()
https://stackoverflow.com/questions/6503241
复制相似问题