【问题标题】:Making the marker size as small as possible with matplotlib.pyplot使用 matplotlib.pyplot 使标记尺寸尽可能小
【发布时间】:2020-02-08 21:26:33
【问题描述】:

我的程序在 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)

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

【问题讨论】:

  • 您的问题没有显示任何代码,因此很难猜测您使用的是哪些参数。您可以尝试删除边界线(lw=0,如果您使用的是plt.scatter

标签: python matplotlib graphing


【解决方案1】:

也许您可以尝试将linewidths 设为0,即标记边缘的线宽。注意下面两个图的区别

fig, ax = plt.subplots(figsize=(6, 4))
plt.scatter(np.random.rand(100000), np.random.rand(100000), s=0.1)

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

【讨论】:

  • 感谢您的帮助!这无疑改善了我的程序。
【解决方案2】:

您可以在调用scatter 时使用marker=',' 将标记设置为单个像素。

查看标记文档here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 2016-02-19
    相关资源
    最近更新 更多