[解決済み】pyplotで円をプロットする
2022-04-09 18:12:32
質問
私はこれのいくつかのバリエーションを試したが、中心 (x,y) と半径 r を入力として matplotlib.pyplot (pylab は使わないでください) で円を描く方法についてのまっすぐな説明を見つけることができなかった。
import matplotlib.pyplot as plt
circle=plt.Circle((0,0),2)
# here must be something like circle.plot() or not?
plt.show()
... でも、まだうまくいきませんでした。
解決方法は?
軸に追加する必要があります。A
Circle
のサブクラスです。
Patch
と
axes
には
add_patch
メソッドを使用します。(また
add_artist
が、お勧めしません)。
これを行う例です。
import matplotlib.pyplot as plt
circle1 = plt.Circle((0, 0), 0.2, color='r')
circle2 = plt.Circle((0.5, 0.5), 0.2, color='blue')
circle3 = plt.Circle((1, 1), 0.2, color='g', clip_on=False)
fig, ax = plt.subplots() # note we must use plt.subplots, not plt.subplot
# (or if you have an existing figure)
# fig = plt.gcf()
# ax = fig.gca()
ax.add_patch(circle1)
ax.add_patch(circle2)
ax.add_patch(circle3)
fig.savefig('plotcircles.png')
この結果、次のような図になります。
最初の円は原点にありますが、デフォルトでは
clip_on
は
True
を超えると切り取られます。
axes
. 3番目の円(緑)は
Artist
. 軸からはみ出します(ただし、図からははみ出さない、つまり図のサイズは
ではない
は、すべてのアーティストをプロットできるように自動的に調整されます)。
x、y、radiusの単位は、デフォルトでデータ単位に対応しています。この場合、軸には何もプロットしていません(
fig.gca()
限界値が設定されていないため、デフォルトでは x と y の範囲が 0 から 1 になっています。
ここでは、この例の続きとして、単位がどのように重要であるかを説明します。
circle1 = plt.Circle((0, 0), 2, color='r')
# now make a circle with no fill, which is good for hi-lighting key results
circle2 = plt.Circle((5, 5), 0.5, color='b', fill=False)
circle3 = plt.Circle((10, 10), 2, color='g', clip_on=False)
ax = plt.gca()
ax.cla() # clear things for fresh plot
# change default range so that new circles will work
ax.set_xlim((0, 10))
ax.set_ylim((0, 10))
# some data
ax.plot(range(11), 'o', color='black')
# key data point that we are encircling
ax.plot((5), (5), 'o', color='y')
ax.add_patch(circle1)
ax.add_patch(circle2)
ax.add_patch(circle3)
fig.savefig('plotcircles2.png')
という結果になります。
2つ目の円の塗りつぶしを設定したのがわかると思います。
False
これは、重要な結果(黄色のデータポイントなど)を囲むのに便利です。
関連
-
Python LeNetネットワークの説明とpytorchでの実装
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] Matplotlibでプロットを表示するのではなく、画像ファイルに保存する。
-
[解決済み] Matplotlib で凡例をプロットの外側に配置する方法
-
[解決済み] 2次元アレイにおけるピーク検出
-
[解決済み] IPythonノートブックmatplotlibプロットをインラインで行う方法
-
[解決済み] PyPlot で Y 軸を反転させる
-
[解決済み] matplotlib のプロットでフォントサイズを変更する方法
-
[解決済み】pyplot 散布図 マーカーの大きさ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
python string splicing.join()とsplitting.split()の説明
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
PythonはWordの読み書きの変更操作を実装している
-
Python jiabaライブラリの使用方法について説明
-
[解決済み] [Solved] sklearn error ValueError: 入力に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれている。
-
[解決済み】DataFrameのコンストラクタが正しく呼び出されない!エラー
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】pyplot 散布図 マーカーの大きさ