2017-08-02 77 views
1

matplotlibを使用して極座標プロットの横に縦軸を配置する方法を教えてもらえますか?極座標プロットの横にある縦軸

http://www.originlab.com/doc/Origin-Help/Polar-Graphの例を引用すると、望ましい結果が得られます。左側に、図に示すように

私はmatplotlibの中で再現したいと思い、私の極座標における所望の垂直バーは次のとおりです。 enter image description here

EDIT:これは私が望むのコードの例です。垂直軸を追加します。

import matplotlib.pyplot as plt 
import numpy as np 

def sin_func(array): 
    final = np.array([]) 
    for value in array: 
     final = np.append(final, abs(np.sin(value))) 
    return final 

x = np.arange(0, 4*np.pi, 0.1) 
y = sin_func(x) 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='polar') 

plt.plot(x, y) 
# Changing axis to pi scale 
ax.set_ylim([0, 1.2]) 
x_tick = np.arange(0, 2, 0.25) 
x_label = [r"$" + format(r, '.2g') + r"\pi$" for r in x_tick] 
ax.set_xticks(x_tick*np.pi) 
ax.set_xticklabels(x_label, fontsize=10) 
ax.set_rlabel_position(110) 

plt.show() 

enter image description here

+0

をあなたは何を試してみましたか?何がうまくいかない? [質問する](https://stackoverflow.com/help/how-to-ask)をお読みください。あなたがすでに何かを試したことを示したら、助けを受ける可能性が高くなります。 –

+1

表現しようとしている軸は何ですか?なぜ私はここでそれが欲しいのか分からない。ちょうどあなた自身の関数の代わりに 'y = np.abs(np.sin(x))'を使ってください。 – Michael

+0

@Michael私はrラベルを取り除くことができるように軸を持っていたいと思います。アドバイスありがとう。 – Tian

答えて

3

あなたが望むようadd_axes位置にある方法あなたの望み、その後、設定目盛り位置とラベルを付加軸を追加します。

import matplotlib.pyplot as plt 
import numpy as np 
from matplotlib.ticker import AutoMinorLocator 

def sin_func(array): 
    final = np.array([]) 
    for value in array: 
     final = np.append(final, abs(np.sin(value))) 
    return final 

x = np.arange(0, 4*np.pi, 0.1) 
y = sin_func(x) 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='polar') 

plt.plot(x, y) 

# Changing axis to pi scale 
ax.set_ylim([0, 1.2]) 
x_tick = np.arange(0, 2, 0.25) 
x_label = [r"$" + format(r, '.2g') + r"\pi$" for r in x_tick] 
ax.set_xticks(x_tick*np.pi) 
ax.set_xticklabels(x_label, fontsize=10) 
ax.set_rlabel_position(110) 

# Add Cartesian axes 
ax2 = fig.add_axes((.1,.1,.0,.8)) 
ax2.xaxis.set_visible(False) # hide x axis 
ax2.set_yticks(np.linspace(0,1,7)) # set new tick positions 
ax2.set_yticklabels(['60 %','40 %', '20 %', '0 %', '20 %', '40 %', '60 %']) 
ax2.yaxis.set_minor_locator(AutoMinorLocator(2)) # set minor tick for every second tick 

plt.show() 

enter image description here

関連する問題