私は600万点からなる散布図を作って、何らかのクラスタリングを理解しようとしています。matplotlib散布図をPNGで
私は単純な散布コマンドでこれを実行しようとすると、matplotlibは過剰なメモリについて不平を言っています。そこで私は3000ポイントをプロットし、Figureを.png形式で保存し、図をクリアし、保存された.pngをimread()
でロードし、次の3000ポイントをオーバーレイすることに決めました。
私はいくつかのパディング問題に直面しており、どのように発生したのか分かりません。私のコードは、私は、テキストファイルの多くを解析していますので、少し長いですが、以下の私の思考を複製サンプルモックアップコードです:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
plt.xlim(0,1000)
plt.ylim(-1000,1000)
plt.scatter(400,500,marker="+",c="r")
plt.gca().set_aspect('equal')
plt.draw()
plt.savefig(r"C:\TMP\fig1.png")
plt.clf()
im = plt.imread(r"C:\TMP\fig1.png")
implot = plt.imshow(im, origin='upper', aspect='equal', extent=[0,1000,-1000,1000], zorder=0)
plt.scatter(600,500,marker="+",c="b")
plt.savefig(r"C:\TMP\fig2.png")
plt.close(fig)
結果は、私がどのように解釈するかを理解していないものです。明らかに、はimshow()の "aspect"と "extent"の関係を理解していません。誰か助けてくれますか?
図1
図2
Iが完全に互いの上にオーバーレイするfig1.png
とfig2.png
両方を期待していました。
ありがとう!私は再びスクリプトを見ていきます。私は何かを見逃しているかもしれませんが、imshow()を使ってfig1.pngを読み込むときのパディングは、nutsをドライブします。なぜpngが2番目のFigureに完全にオーバーレイされていないのかをfdigureするのですか?プロットのプロットを得ることは私の意図ではありませんでした。 – kabel
私は問題が何であるかは分かりませんが、それはいい考えではありません。私はあなたがそれを違うことをお勧めします。 – Lucas
ご迷惑をおかけして申し訳ありません。私が説明しようとしていたことは、最初に意図したようにplot-save-load-plotをしたいのであれば、2度目の2軸セットを見たくないということです。保存されたFigure(上記の図1)は適切にスケーリングされず、2つの軸セット(PNGからのものと新しく作成されたFigureからのもの)を持つFigure 2で終わります。 imshow()でどのように動作するのか理解できないパディング問題があります。または、あなたの提案通りにスクリプトを修正することができます。ありがとう。 – kabel