Matplotlibを使用して、散布図のPNGファイルを生成します。ここで、散布図ごとに、PNGファイルに加えて、散布図内のさまざまなポイントのピクセル座標のリストも生成したいと思います。
散布図のPNGファイルを生成するために使用するコードは、基本的に次のようになります。
from matplotlib.figure import Figure
from matplotlib.pyplot import setp
from matplotlib.backends.backend_agg import FigureCanvasAgg
...
fig = Figure(figsize=(3, 3), dpi=100)
ax = fig.gca()
for (x, y), m, c in zip(points, markers, colors):
ax.scatter(x, y, marker=m, c=c, s=SIZE, vmin=VMIN, vmax=VMAX)
# several assorted tweaks like ax.spines['top'].set_color('none'), etc.
setp(fig, 'facecolor', 'none')
# FigureCanvasAgg(fig).print_png(FILEPATH)
...(大文字の変数は設定可能なパラメーターを表します)。
(px, py)
のポイントに対応する結果のPNGのピクセル座標のペアのリストを作成するにはどうすればよいpoints
ですか?
[編集:についてのナンセンスを削除しましimshow
た。]
[編集:
OK、これがジョー・キントンの提案に基づいて私が最終的に思いついたものです。
# continued from above...
cnvs = FigureCanvasAgg(fig)
fig.set_canvas(cnvs)
_, ht = cnvs.get_width_height()
pcoords = [(int(round(t[0])), int(round(ht - t[1]))) for t in
ax.transData.transform(points)]
fig.savefig(FILEPATH, dpi=fig.dpi)
結果のピクセル座標(in pcoords
)は、正しい値にかなり近い値になります。実際、y座標は正確に正しいです。x座標は1または2ピクセルずれていますが、これは私の目的には十分です。
]