1

震えプロットでスケールがどのように機能するかを理解しようとしています。ここで説明を見つけましたが、著者の言っていることを理解していることを再確認したいと思います。

彼が言うとき

角度キーワードを「xy」に設定すると、ページ上の幾何学的単位ではなく、物理的な軸単位に従ってベクトル コンポーネントがスケーリングされます。

彼は、たとえば、1 ピクセル (簡単にするために、1 秒あたりとしましょう) の動きがあり、これが 232x232 の画像 (私が持っている実際のもの) で発生した場合、1 ピクセル/秒の動きが表示されますか? 232倍に拡大?それは 1/232 ? または、1px/s は (軸に対する角度に関係なく) 1 px を表すように表示されます。つまり、1px になりますが、そのピクセルは 232 x 232 ピクセル サイズの画像で表示されますか?

ベクトル コンポーネント単位を物理軸単位に乗算的に変換する実際の倍率は、幅/スケールです。ここで、幅は物理単位でのプロットの幅であり、スケールは quiver の scale キーワード引数で指定された数値です。

つまり、スケールを 10 にすると、実際には 10px/s のベクトルが 1px/s として表示されるということですか? (これらは非常に基本的な質問であることは知っていますが、「物理軸」と「ページ上の幾何学的単位」と混同しています)。

同じ 1px の動きで、1 つのサイズが 40x40 で、もう 1 つの 160x160 の 2 つの画像を使用して、これをテストし、それがプロットにどのように影響するかを確認します。

私がやりたいことは、実際に 1px/s が 1px の長さを表すことです。その長さはプロットで表されます (matplotlib.pyplot を使用)。

4

1 に答える 1

0

わかりましたので、合成データをいじって、「 angle = 'xy' 」を使用するか、単に省略します (つまり、次のようなものがあります

q = pl.quiver(a[valid,0],a[valid,1],a[valid,2],a[valid,3], color='r',**kw)、ここで kwargs の 1 つはスケール ファクターです。

プロットのに合わせてスケーリングするようです。使った

pl.draw() pl.xticks(np.arange(0,120,32)) pl.yticks(np.arange(0,100,32)) pl.grid(color = 'y') pl.savefig(new_file, bbox = "tight") 私の図を保存するには(実際の画像は120x100(この場合)、120x120、および64x64でした。

テストのために行ったこと: 水平方向と垂直方向に 1 ピクセルのシフトを作成し、他の画像では 5 ピクセル (右に 3 ピクセル、下に 4 ピクセル) の斜めシフトを作成しました。

画像のように 1px/s ベクトルを 1px の長さにするには、スケールをプロットのに設定する必要があります。つまり、私の場合は 64 または 120 でした。画像は縮尺に影響するため、画像を高さ 100px にトリミングしました。私が行ったいくつかのテストから、それは何の効果もないようです。さまざまなピクセル シフトでテストする価値はありますが、水平/垂直シフトは異なる辺の長さの画像を使用して異なる方法でスケーリングされていないため、期待どおりに動作すると想定しても安全だと思います。

このようなベクトルのスケーリングの理由は何だろうか...

于 2013-07-10T14:36:30.737 に答える