2017-02-15 4 views
2

Iの方程式をプロットする必要があります極/等高線図:円の中にいくつかの曲線をプロットする方法は?

Y_axis = cos(phi) * sqrt(1 - (arctan(r)) /r) ---スパイダー図ここ

ため:

r = R/a_H 
Y_axis = V_r - V_sys 

異なる曲線は、のためのものである:
Y_axis = [0.0, 0.2, 0.4, 0.6, 0.8]

必要プロットこのあります:
enter image description here

私が試した:

# Imports 
import numpy as np 
import matplotlib.pyplot as plt 

x = np.linspace(0.01, 5., 100001) 
ya = [0.0, 0.2, 0.4, 0.6, 0.8] 
s = lambda x: np.cos(0.) * np.sqrt((1. - (1./x) * np.arctan(x))) 


plt.plot(x, s(x), 'b-', label=r'$\frac{V(R)}{V_{H}}$') 
plt.show() 

を私は右図のような図を作成する方法は考えていますか?

ヘルプが高く評価されます。

関連リンク:
https://plot.ly/python/polar-chart/

+2

私はあなたが引用「蜘蛛のプロットは、」あなたが複製しようとしているものと同じプロットではありません合理的に確信しています。この引用のスパイダープロットは、多次元データを図式化する方法です。 –

答えて

2

あなたはいくぶん同様のプロットを(希望の似ているように変更するパラメータと遊ぶ)を取得し、これを試すことができます。二変量関数y=f(x,phi)があるので、必要なのはcontour plotです。

import numpy as np 
import matplotlib.pyplot as plt 
x = np.linspace(-5., 5., 1001) 
phi = np.linspace(-1., 1., 1001) 
X, Phi = np.meshgrid(x, phi) 
Y = np.cos(Phi) * np.sqrt((1. - (1./X) * np.arctan(X))) 
plt.contour(X, Phi, Y) 
plt.show() 

enter image description here

+0

それは与える:RuntimeWarning:無効な値は掛け算で遭遇した –

2

この質問はから取られている:私は、Sandipanから天体物理学

借入アイデア:
著者:スパークとギャラガー
ブック:宇宙第2版で銀河
コースそれはこのようでした:

#!/usr/bin/env python3 
# -*- coding: utf-8 -*- 
# 
# Author  : Bhishan Poudel; Physics PhD Student, Ohio University 
# Date  : Feb 3, 2017 
# Last update : 
# 

# Imports 
import numpy as np 
import seaborn as sns 
import matplotlib.pyplot as plt 


def myplot(alpha, color='k'): 
    """plot spider diagram.""" 
    c = lambda R: 0.62 * alpha/R * (1. + R**2)**0.75 
    s = lambda R: np.sqrt(1. - (0.62 * alpha/R)**2 * (1. + R**2) ** 1.5) 

    R = np.linspace(-5., 5., 10001) 
    x = [i * c(i) for i in R] 
    x1 = [-1 * i * c(i) for i in R] 
    y = [i * s(i) for i in R] 

    label = r'$V_r - V_{sys} = $' + str(alpha) + r'$V_{max}sin(30)$' 
    plt.plot(x, y, label=label, color=color) 
    plt.plot(x1, y, label=None, color=color) 
    plt.legend() 


def main(): 
    """main fn.""" 
    alphas = [0.2, 0.4, 0.6, 0.8] 
    colors = sns.cubehelix_palette(4, start=0.0) 
    for i, alpha in enumerate(alphas): 
     myplot(alpha, colors[i]) 

    # now show the plot 
    plt.xlim([-5., 5.]) 
    plt.ylim([-10., 10.]) 
    plt.xlabel(r'$x = r/a \quad cos(\phi)$') 
    plt.ylabel(r'$y = r/a \quad sin(\phi)$') 
    plt.legend(frameon=False, loc=1) 
    plt.title(r'Fig. Spider diagram for rotational curve for Plummer model') 
    # plt.savefig('fig_5_19a.pdf', bbox_inches='tight') 
    plt.show() 


if __name__ == '__main__': 
    main() 

得られた画像である。

enter image description here

enter image description here

enter image description here

enter image description here

UPDATE

The closest figure I got it: 
#!/usr/bin/env python3 
# -*- coding: utf-8 -*- 
# 
# Author  : Bhishan Poudel; Physics PhD Student, Ohio University 
# Date  : Feb 3, 2017 
# Last update : 
# 

# Imports 
import numpy as np 
import seaborn as sns 
import matplotlib.pyplot as plt 


def myplot(alpha): 
    """plot spider diagram.""" 

    R = np.linspace(-5., 5., 1001) 
    c = lambda R: 0.62 * alpha/R * (1. + R**2)**0.75 
    s = lambda R: np.sqrt(1. - (0.62 * alpha/R)**2 * (1. + R**2) ** 1.5) 

    x = [i * c(i) for i in R] 
    x1 = [-1 * i * c(i) for i in R] 
    y = [i * s(i) for i in R] 

    plt.text(np.nanmax(x)+0.1, np.nanmax(y), alpha) 

    plt.plot(x, y, 'k-') 
    plt.plot(x1, y, 'k:') 

    # add circle 
    circle1=plt.Circle((0,0),5,color='k', fill=False, ls='--') 
    plt.gcf().gca().add_artist(circle1) 


def main(): 
    """main fn.""" 
    alphas = [0.2, 0.4, 0.6, 0.8] 
    for i, alpha in enumerate(alphas): 
     myplot(alpha) 

    # now show the plot 
    plt.xlim([-10., 10.]) 
    plt.ylim([-10., 10.]) 
    plt.legend(frameon=False) 
    plt.grid(False) 
    plt.axis('off') 
    plt.savefig('hello.png') 
    plt.show() 


if __name__ == '__main__': 
    main() 

enter image description here

+0

ニース、upvoted、それはちょうど元の図のように見えるのですか? –

+1

@SandipanDeyアイデアをありがとう、私はまだそれを正確にしようとしている! –

関連する問題