gpt4 book ai didi

python - matplotlib 删除看不见的形状

转载 作者:太空宇宙 更新时间:2023-11-04 06:19:49 25 4
gpt4 key购买 nike

我想知道是否可以移除任何被其他形状完全覆盖的形状?我经常生成粒子的散点图,其中一些粒子彼此靠近,并且由于粒子的数量很容易达到 100k,因此这些图变得非常庞大。

考虑以下简单示例:

    import matplotlib.pyplot as plt
import numpy as np
N = 10000
x = np.random.randn(N)
y = np.random.randn(N)
plt.scatter(x,y)
plt.savefig('unseen.pdf')

当使用大于 10000 的 N 值时,大部分圆圈位于其他圆圈下方并且看不见。但是,当打开生成的 pdf 文件时,会绘制所有圆圈,并且打开文件的时间会增加,即使可见圆圈的数量几乎相同也是如此。

在 pdf-viewer 中打开图形的时间(无论哪个):

N=10000 > 5 秒 (2.4MB)

N=20000 > 10 秒 (4.8MB)

N=40000 > 20 秒 (9.5MB)

时间和文件大小都线性增加,正如预期的那样,增加圆圈数。

有没有人知道如何解决这个问题?

最佳答案

我认为您应该将绘图保存为光栅图像,然后将其嵌入到 pdf 中(cairo 模块效果很好)。

根据我的经验,大多数人不会在 PDF 中缩放太多以区分矢量和图像。此外,您的矢量内容足够重,足以证明在不增加文件大小的情况下使用更高 DPI 图像是合理的。

此外,一个好的技巧是使用 ms(标记大小)和 mew(标记边缘宽度)和 alpha 绘制无边框的透明圆圈> 关键字参数。视觉效果令人惊叹。而不是

plt.scatter(x, y)

你可以做到

plt.plot(x, y, 'o', ms=3, mew=0, alpha=0.3)

试试看!

希望这对您有所帮助!

关于python - matplotlib 删除看不见的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13178293/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com