以前の記事で、Matplotlibで作るかっこいいグラフとして、円を描写してみました。
今回は、"円グラフ"でもなく、"円の描写(マスキング)"でもなく、円のプロットをやってみましょう。
高校の時に習った円の定義に立ち返れば、
x=sinθ
y=cosθ
として、xyグラフを描写すると、綺麗な円が描けます。
それではソースコードです。1行1行解説を加えています。内輪から順に同じような事をやっているだけなので、説明を省けば、10行以内に収まるくらい簡単ですよ:)

ちょっと色のセンスが悪いですが、綺麗な輪っかが描けました:D
円の方程式をしっかり理解していれば、簡単に描写できる
円関数、円の方程式は、x^2+y^2=1と学校で習いましたが、しっかりx=sinθ、y=cosθであるということまで理解していないと、いざ円関数を描写しようと思うと、「あれ?どうすれば...」とつまずいてしまいますよね。
前回の記事で紹介した「グラフにマスキング」としっかり使い分けられると、描写の幅が広がりますね◎
マスキングの場合は、face colorと透明度alpha=0.5とすれば、綺麗なマスキング、今回のようなプロットの場合は、markerの種類と色、白抜き(markercolor="none", markeredgecolor="blue")とすると、綺麗に描けます。
綺麗にできたので、この図もInstagramに投稿しようと思います:)
円グラフではなく、円関数(円の方程式)をグラフに表示する方法
そもそもの円の定義(円関数)ですが、円上の点をsinx, cosxで表して、30度のときはsinθ=1/2, 60度のときはsinθ=√3/2など高校の時によく覚えましたよね。高校の時に習った円の定義に立ち返れば、
x=sinθ
y=cosθ
として、xyグラフを描写すると、綺麗な円が描けます。
それではソースコードです。1行1行解説を加えています。内輪から順に同じような事をやっているだけなので、説明を省けば、10行以内に収まるくらい簡単ですよ:)
これを出力すると、以下の図になります。import matplotlib.pyplot as plt import numpy as np fig, ax = plt.subplots(1,1) #figureの中にaxesを用意。(1,1)は1行1列の意味 n_points = 40 #分点数 theta = np.linspace(0, 2 * np.pi, n_points) #角度 [rad] radius = 1 #半径 #グラフ1 x = radius * np.sin(theta) + 1 y = radius * np.cos(theta) + 1 ax.plot(x, y, "C3.") #"Co."は省略の書き方、デフォルト3番目の色指定C0にマーカー"." #グラフ2 x = 1.5*radius * np.sin(theta) + 1 y = 1.5*radius * np.cos(theta) + 1 ax.plot(x, y, "C2o") #"Coo"は省略の書き方、デフォルト2番目の色指定C0にマーカー"." #グラフ3 x = 2*radius * np.sin(theta) + 1 y = 2*radius * np.cos(theta) + 1 ax.plot(x, y, "o", color="none", markeredgecolor="C1", markersize=8, markeredgewidth=2) #グラフ4 x = 2.5*radius * np.sin(theta) + 1 y = 2.5*radius * np.cos(theta) + 1 ax.plot(x,y,linestyle=':') #markerを使うとき、lineプロットがオフになるので、別途設定 ax.plot(x, y, marker="o", color="none", markeredgecolor="C0") ax.set_aspect("equal") plt.savefig("logo13.png") plt.show()

ちょっと色のセンスが悪いですが、綺麗な輪っかが描けました:D
円の方程式をしっかり理解していれば、簡単に描写できる
円関数、円の方程式は、x^2+y^2=1と学校で習いましたが、しっかりx=sinθ、y=cosθであるということまで理解していないと、いざ円関数を描写しようと思うと、「あれ?どうすれば...」とつまずいてしまいますよね。前回の記事で紹介した「グラフにマスキング」としっかり使い分けられると、描写の幅が広がりますね◎
マスキングの場合は、face colorと透明度alpha=0.5とすれば、綺麗なマスキング、今回のようなプロットの場合は、markerの種類と色、白抜き(markercolor="none", markeredgecolor="blue")とすると、綺麗に描けます。
綺麗にできたので、この図もInstagramに投稿しようと思います:)
コメント