私は一連のポイントを持っています:
a = ([126, 237, 116, 15, 136, 348, 227, 247, 106, 5, -96, 25, 146], [117, 127, 228, 107, 6, 137, 238, 16, 339, 218, 97, -4, -105])
そして、私はそのようにそれらの散布図を作成します:
fig = plt.figure(figsize = (15,6))
ax = fig.add_subplot(111)
ax.scatter(a[0], a[1], color = 'red', s=binradius)
これはこのプロットになります:
-
私はこれを、各散乱点に球形のブロブルがある画像でオーバーレイしています。このblobを適合させたいので、適合を実行するために散布点の周囲に長方形の領域を定義しています。
次のように、プロットでこの長方形を見て、ブロブを囲むのに十分な大きさであるかどうかを視覚的に確認したいと思います。
scatter
を使ってできますか?それとも私ができる他の方法はありますか?
@ ralf-htpの答えは素晴らしく、クリーンでscatter
を使用していますが、私が知る限り、マーカーのスケールはpoints
で表されます(例 here を参照) 。さらに、ズームインしても、カスタムマーカーのサイズは変わりません。
多分それはあなたが探しているものだけです。そうでない場合は、個別のRectangle
オブジェクトを使用することでもうまく機能します。これにより、ポイントではなくデータ単位で幅と高さを指定でき、ズームインすることができます。必要に応じて、angle
属性を設定することで、回転も簡単に適用できます。
_from matplotlib import pyplot as plt
from matplotlib.patches import Rectangle
# Your data
a = ([126, 237, 116, 15, 136, 348, 227, 247, 106, 5, -96, 25, 146],
[117, 127, 228, 107, 6, 137, 238, 16, 339, 218, 97, -4, -105])
# Your scatter plot
fig = plt.figure()
ax = fig.add_subplot(111)
ax.scatter(a[0], a[1], color = 'red', s=10)
# Add rectangles
width = 30
height = 20
a_zipped = Zip(*a)
for a_x, a_y in a_zipped:
ax.add_patch(Rectangle(xy=(a_x-width/2, a_y-height/2) ,width=width, height=height, linewidth=1, color='blue', fill=False))
ax.axis('equal')
plt.show()
_
注:必要に応じて、ax.get_children()
を介してRectangle
インスタンスを取得できます。
matplotlib vertsを理解するや のように、matplotlib.pyplot.scatter
のverts
オプションでマーカーを定義できますhttps://matplotlib.org/gallery/lines_bars_and_markers/scatter_custom_symbol.html
verts:(x、y)のシーケンス、オプション
マーカーが[なし]の場合(これは完全には機能しません。cf nderstanding matplotlib verts ]の場合、これらの頂点を使用してマーカーが作成されます。マーカーの中心は、正規化された単位で(0、0)にあります。マーカー全体がsで再スケーリングされます。
ソース: https://matplotlib.org/api/_as_gen/matplotlib.pyplot.scatter.html
ただし、ペイントしたマーカーを正確に定義する方法がわからないため、ピクセルごとに目的のマーカーを含むlist
を作成する必要があります
verts
の長方形:
verts = list(Zip([-10.,10.,10.,-10],[-5.,-5.,5.,5]))
ax.scatter([0.5,1.0],[1.0,2.0], marker=(verts,0))