5

Matplotlibで軸ラベルを変更する際に問題が発生しました。極座標プロットの放射軸オプションを変更したい。

基本的に、私は円柱の歪みを計算しています。これは、半径が元の(完全に円形の)円柱からどれだけずれているかに他なりません。歪み値の一部は負ですが、引張力と圧縮力のために正の値もあります。これを円筒座標でグラフィカルに表現する方法を探しているので、極座標プロットが最善の策だと思いました。Excelには、最小および最大の放射軸値を指定できるほど柔軟な「レーダーチャート」オプションがあります。Matplotlibを使用してPythonでこれを複製したいと思います。

極座標にプロットするための私のPythonスクリプトは次のとおりです。

#!usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-180.0,190.0,10)
theta = (np.pi/180.0 )*x    # in radians

offset = 2.0

R1 = [-0.358,-0.483,-0.479,-0.346,-0.121,0.137,0.358,0.483,0.479,0.346,0.121,\
-0.137,-0.358,-0.483,-0.479,-0.346,-0.121,0.137,0.358,0.483,0.479,0.346,0.121,\
-0.137,-0.358,-0.483,-0.479,-0.346,-0.121,0.137,0.358,0.483,0.479,0.346,0.121,\
-0.137,-0.358]

fig1 = plt.figure()
ax1 = fig1.add_axes([0.1,0.1,0.8,0.8],polar=True)
ax1.set_rmax(1)
ax1.plot(theta,R1,lw=2.5)

私のプロットは次のようになります。悪い

しかし、これは私がそれを提示したい方法ではありません。放射軸を変更して、データをある参照値、たとえば-2からの偏差として表示できるようにします。極座標でMatplotlibに最小軸ラベルを変更するように依頼するにはどうすればよいですか?私はこれをExcelで非常に簡単に行うことができます。次のExcelレーダーチャートを取得するために、最小半径値-2を選択します。
エクセルプロット

Pythonでは、入力データを2の大きさで簡単にオフセットできます。次のように、新しいデータセットはR2と呼ばれます。

#!usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-180.0,190.0,10)
theta = (np.pi/180.0 )*x    # in radians

offset = 2.0

R2 = [1.642,1.517,1.521,1.654,1.879,2.137,2.358,2.483,2.479,2.346,2.121,1.863,\
1.642,1.517,1.521,1.654,1.879,2.137,2.358,2.483,2.479,2.346,2.121,1.863,1.642,\
1.517,1.521,1.654,1.879,2.137,2.358,2.483,2.479,2.346,2.121,1.863,1.642]

fig2 = plt.figure()
ax2 = fig2.add_axes([0.1,0.1,0.8,0.8],polar=True)
ax2.plot(theta,R2,lw=2.5) 
ax2.set_rmax(1.5*offset)
plt.show()

プロットを以下に示します。 良い

これを取得したら、軸ラベルを手動で追加して、スクリプトにハードコーディングできます。しかし、これは本当に醜い方法です。入力データを操作せずに、Excelレーダーチャートに相当するMatplotlibを直接取得して、軸ラベルを変更する方法はありますか?

4

1 に答える 1

9

軸の制限を設定する通常の方法を使用できます。

#!usr/bin/env python
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-180.0,190.0,10)
theta = (np.pi/180.0 )*x    # in radians

offset = 2.0

R1 = [-0.358,-0.483,-0.479,-0.346,-0.121,0.137,0.358,0.483,0.479,0.346,0.121,\
-0.137,-0.358,-0.483,-0.479,-0.346,-0.121,0.137,0.358,0.483,0.479,0.346,0.121,\
-0.137,-0.358,-0.483,-0.479,-0.346,-0.121,0.137,0.358,0.483,0.479,0.346,0.121,\
-0.137,-0.358]

fig1 = plt.figure()
ax1 = fig1.add_axes([0.1,0.1,0.8,0.8],polar=True)
ax1.set_ylim(-2,2)
ax1.set_yticks(np.arange(-2,2,0.5))
ax1.plot(theta,R1,lw=2.5)
于 2012-02-10T16:54:12.590 に答える