我在Matplotlib中更改我的座標軸標籤時出現問題。我想在我的Polar Plot中更改徑向軸選項。更改Matplotlib/Python中的極座標圖的軸選項
基本上,我正在計算一個圓柱體的變形,這只是半徑偏離原始圓柱體(完全圓形)的程度。一些畸變值爲負值,而另一些值則由於拉伸和壓縮力而爲正值。我正在尋找一種方法來以圖形方式在圓柱座標中表示這一點,所以我認爲極座標圖是我最好的選擇。 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中很容易地做到這一點。我選擇的-2最小半徑值,得到下面的Excel雷達圖:
在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等價物並更改我的軸標籤而無需操縱我的輸入數據?
重複:http://stackoverflow.com/questions/9216661/polar-plot-with-negative-radial-coordinates-in- python-matplotlib – 2012-02-10 00:24:13
另外,我想你必須添加偏移量並自己更改標籤。根據定義,極座標不能有負'r'。你應該可以爲它編寫一個函數;使用'ax2.set_yticks([y-offset for ax2.get_yticks()])中的偏移量''作爲標籤。 – 2012-02-10 00:26:18
好吧,我想我的問題的答案。這說得通;極座標圖不能有負的徑向座標。我想我必須編寫自己的函數來模仿Excel的雷達圖表。 – prrao 2012-02-10 02:55:00