2

他の形で完全に覆われている形を削除することは可能ですか?私はしばしば、粒子のいくつかが互いに近くに配置されている粒子の散布図を生成しています。粒子の数は簡単に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)

円の数を増やすと予想されるように、時間とファイルサイズの両方が直線的に増加します。

誰かがこれを回避する方法についてのアイデアを持っていますか?

4

1 に答える 1

1

プロットをラスターイメージとして保存してから、PDFに埋め込む必要があると思います(cairoモジュールはうまく機能します)。

私の経験では、ほとんどの人は、ベクターと画像を区別するためにPDF内をあまりズームしません。その上、あなたのベクターのものは、ファイルサイズを増やすことなく、より高いDPI画像の使用を正当化するのに十分重いです。

msまた、(マーカーサイズ)とmew(マーカーエッジ幅)およびalphaキーワードパラメータを使用して、境界線のない透明な円をプロットすることをお勧めします。視覚効果は素晴らしいです。それ以外の

plt.scatter(x, y)

できるよ

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

試してみてください!

お役に立てれば!

于 2012-11-01T13:49:24.700 に答える