Rで円を描く方法あれこれ
グラフに円を描くような関数が用意されていてもよさそうなものですが、どうもないみたいですので、自力で描く必要がありそうです。
簡単のため、半径1の円の例です。
まず思いつくのは、
x^2 + y^2 = 1
をyについて解いて、
y = ±√(1 - x^2)
という関数の形にして、curve関数を使って描く方法でしょうか↓
媒介変数表示を使うやり方もありますね。
x = cosθ
y = sinθ
の、x と y の組を plotしていく感じです↓
ちなみに type=l オプションを忘れると↓こんな感じになります。
何度も使う場合は、中心座標や半径を引数として関数化しておくといいですね↓
plot関数でなく、polygon関数を使ってもいいですね↓
polygon関数だと塗りつぶす色も指定できますね↓
そして、↓これはどうだ?
text関数で「○」という文字を置いてみました。線が太いし、任意の半径にできないし、これはダメですね・・・
次は絶対におすすめしない、すごくまどろっこしい方法
Rのcontour(等高線)を使って陰関数のグラフを描く - Rプログラミングの小ネタで紹介した方法なんですが、格子状の各点について x^2 + y^2 の値を算出したあとに、値が1のところに等高線を引くという複雑な方法です。
任意の陰関数に適用できるところが便利なんですが、円みたいな簡単な方程式に使うメリットは皆無ですね。
最後の2つは蛇足でした・・・
簡単のため、半径1の円の例です。
まず思いつくのは、
x^2 + y^2 = 1
をyについて解いて、
y = ±√(1 - x^2)
という関数の形にして、curve関数を使って描く方法でしょうか↓
![]() |
curve関数で上側と下側を別々に描く |
媒介変数表示を使うやり方もありますね。
x = cosθ
y = sinθ
の、x と y の組を plotしていく感じです↓
![]() |
媒介変数で座標を求めたあとにプロット |
ちなみに type=l オプションを忘れると↓こんな感じになります。
![]() |
点でプロットすると理屈が分かりやすい |
何度も使う場合は、中心座標や半径を引数として関数化しておくといいですね↓
![]() |
こんなところに隠れミッキーが!(自分で描いたくせに) |
plot関数でなく、polygon関数を使ってもいいですね↓
![]() |
polygon関数で線を引いたもの |
polygon関数だと塗りつぶす色も指定できますね↓
![]() |
polygon関数だと塗りつぶし指定もできる |
そして、↓これはどうだ?
![]() |
textで丸の文字「○」をプロット |
text関数で「○」という文字を置いてみました。線が太いし、任意の半径にできないし、これはダメですね・・・
次は絶対におすすめしない、すごくまどろっこしい方法
![]() |
contour関数の等高線で描かれた円 |
Rのcontour(等高線)を使って陰関数のグラフを描く - Rプログラミングの小ネタで紹介した方法なんですが、格子状の各点について x^2 + y^2 の値を算出したあとに、値が1のところに等高線を引くという複雑な方法です。
任意の陰関数に適用できるところが便利なんですが、円みたいな簡単な方程式に使うメリットは皆無ですね。
最後の2つは蛇足でした・・・
コメント
コメントを投稿