2016-04-09 26 views
2

如何獲得RadioButtons小部件的窄寬度和大高度,並且仍然具有不重疊的圓形單選按鈕?如何獲得RadioButtons小部件的窄寬度和大高度,並且仍然具有不重疊的圓形單選按鈕?

plt.figure() 
rax = plt.axes([0.1, 0.1, 0.6, 0.6], frameon=True ,aspect='equal') 
labels = [str(i) for i in range(10)] 
radios = RadioButtons(rax, labels) 
for circle in radios.circles: # adjust radius here. The default is 0.05 
    circle.set_radius(0.02) 
plt.show() 

以上的作品,因爲它設置寬度和軸實例0.6的高度,但我想的寬度是,比方說,0.1和高度爲0.6:

plt.figure() 
rax = plt.axes([0.1, 0.1, 0.1, 0.6], frameon=True, aspect='equal') 
labels = [str(i) for i in range(10)] 
radios = RadioButtons(rax, labels) 
for circle in radios.circles: # adjust radius here. The default is 0.05 
    circle.set_radius(0.02) 
plt.show() 

這只是使結果超級微小,寬度爲0.1,高度爲0.1(我想因爲aspect ='equal'正在使用,如果我刪除後者,我得到這個: Radio buttons are not round, even though I set their radius to 0.02

我要問的原因是這些單選按鈕會一個狹窄的邊欄到右邊的情節,所以它應該狹窄但高。

回答

0

您可以創建RadioButton」後改變圓的高度,使用matplotlib.patches.Circle補丁的財產,height

import matplotlib.pyplot as plt 
from matplotlib.widgets import RadioButtons 

plt.figure() 
rax = plt.axes([0.1, 0.1, 0.1, 0.6], frameon=True) 
labels = [str(i) for i in range(10)] 
radios = RadioButtons(rax, labels) 

rpos = rax.get_position().get_points() 
fh = fig.get_figheight() 
fw = fig.get_figwidth() 
rscale = (rpos[:,1].ptp()/rpos[:,0].ptp()) * (fh/fw) 
for circ in radios.circles: 
    circ.height /= rscale 

plt.show() 

重要的是,我們並沒有設定aspectequal這裏。相反,我們要人爲地改變圈子的高度。在上面的例子中,我使用rax座標軸的位置來計算需要調整的高度。請注意,我們還需要考慮圖的縱橫比。

enter image description here

相關問題