1. ホーム
  2. python

[解決済み] Pythonのパッチとは何ですか?

2022-02-11 10:09:11

質問

現在、Pythonで円を描こうとしています。しかし、円の輪郭が描画されません。ラインスタイルを変更しようとしましたが、エラーが出てしまいます。

どうすればいいですか?

行スタイルの不整合は、現在整理中です( https://github.com/matplotlib/matplotlib/pull/3772 ).

mplのアーキテクチャを軽くまとめてみました。 Figure は、1つまたは複数の Axes を多く持つもの Artist の(微妙なディテール。 AxesFigure のサブクラスです。 ArtistFigure オブジェクトは、他の Artist のみならず Axes ). Figure オブジェクトはまた Canvas オブジェクト(様々なフォーマット(png, tiff, svg, pdf, eps, ...)に出力するための多くの実装があります)を使用します。 を描画すると Figure は、内部でいくつかの配管があり、それぞれの Artist オブジェクトに再帰的に描画されます。 Canvas .

ほとんどの plt コマンドは Artist を追加し、現在の Axes (それ pyplot は十分な内部状態を持っているので、現在の Axes があり、必要であれば作成する)。 しかし Circle を作成し返すだけです。 Patch オブジェクト(これは Artist ). というのは何だか変ですね。 Circle を経由して直接公開されます。 pyplot インターフェイスを使用します。

これを動作させるためには、次のようなことが必要です。

import matplotlib.pyplot as plt
import matplotlib.patches as mpatches

fig, ax = plt.subplots()

# note use Circle directly from patches
circ = mpatches.Circle((1, 0), 5, linestyle='solid', edgecolor='b', facecolor='none')
ax.add_patch(circ)

ax.set_xlim(-10, 10)
ax.set_ylim(-10, 10)
ax.set_aspect('equal')

PEP8に従ってください。後で自分に感謝することになりますよ。