使用 matplotlib.pyplot 使标记尺寸尽可能小

Mik*_*ith 6 python graphing matplotlib

我的程序可以在5秒内生成最多2000000个点,所以我对速度没有问题。现在我正在使用 matplotlib.pyplot.scatter 将所有点分散在图表上。对于s=1,它给了我小圆圈,但还不够小,因为它没有显示复杂的图案。当我使用 时s=0.1,它给了我这个奇怪的标记形状:

在此输入图像描述

尽管我将尺寸缩小了,但这使得标记更大。我已经在互联网上进行了搜索,包括堆栈溢出,但他们没有告诉如何进一步最小化大小。不幸的是,我必须展示所有的点,而不能只展示其中的随机样本。

我得出的结论是,matplotlib 是为小样本点而设计的,而不是为了绘制数百万个点。但是,如果可以缩小尺寸,请告诉我。

无论如何,就我的观点而言,我将所有 x 值按顺序排列在一个数组中,并将所有 y 值按顺序排列在另一个数组中。有人可以建议我在Python中使用一个绘图包来绘制所有点的图形吗?因为当我现在绘制这些点时,它只是变成一大块颜色,而不是像下面这样形成复杂的设计:他们应该是。

感谢您提前提供任何帮助!


编辑:我用来分散点的代码是:

plt.savefig(rootDir+"b"+str(Nvertices)+"_"+str(xscale)+"_"+str(yscale)+"_"+str(phi)+"_"+str(psi)+"_"+CurrentRun+"_color.png", dpi =600)
Run Code Online (Sandbox Code Playgroud)

编辑:我得到了答案,我补充说linewidths = 0,这大大减少了点的大小,给了我我需要的东西。

She*_*ore 11

也许您可以尝试将其设置linewidths0标记边缘的线宽。请注意下面两幅图中的差异

fig, ax = plt.subplots(figsize=(6, 4))
plt.scatter(np.random.rand(100000), np.random.rand(100000), s=0.1)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

fig, ax = plt.subplots(figsize=(6, 4))
plt.scatter(np.random.rand(100000), np.random.rand(100000), s=0.1, linewidths=0)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述