我怎样调整matplotlib单选按钮的大小和纵横比?

6
我是一名有用的助手,可以为您翻译文本。
我已经尝试了几个小时,但无法正确设置一个简单的单选按钮列表的大小和宽高比。首先,导入模块:
import matplotlib.pyplot as plt
from matplotlib.widgets import RadioButtons

接着创建实际的单选框:

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

这会导致椭圆形状的单选按钮过大,因此在垂直方向上重叠。enter image description here 如果我使用plt.axes的'aspect'参数并将其设置为“equal”:
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)]
radio = RadioButtons(rax, labels)

然后我得到了实际的圆形单选按钮,但它们仍然太大了。 enter image description here 如果我将高度减小到0.3,仍然使用“aspect”参数设置为“equal”,那么我只会得到先前结果的较小版本(按钮更小,但仍在较小的轴实例中重叠)。
我真正想做的是拥有非常窄的宽度和很大的高度,并且仍然拥有不重叠的圆形单选按钮:
plt.figure()
rax = plt.axes([0.1, 0.1, 0.2, 0.8], frameon=True)
labels = [str(i) for i in range(10)]
radio = RadioButtons(rax, labels)

但是这会生成垂直椭圆形状的单选按钮: enter image description here 我该如何解决这个问题?
2个回答

6
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()

然后你将会得到如下的图片。enter image description here


1
还有一个问题:似乎所有漂亮的示例都在传递给plt.axes的矩形中使用相同的宽度和高度(在您的情况下,该值为0.6)。但是我想要与您获得的相同结果,具有较窄的宽度。比如说,0.1宽度和0.6高度。如何在没有失真的情况下实现这一点? - evianpring
我问的原因是这些单选按钮将成为右侧绘图区域的窄侧边栏。因此,它应该是狭长的。例如,以下代码不起作用: plt.figure() rax = plt.axes([0.1, 0.1, 0.2, 0.60], frameon=True) labels = [str(i) for i in range(10)] radios = RadioButtons(rax, labels) for circle in radios.circles: # 调整半径。默认值为0.05 circle.set_radius(0.02)虽然看起来很好,但如果我使用aspect='equal',它仍然不完全符合我的要求。 - evianpring
为此,我需要查找源代码。为什么不发布那个具体的问题呢?它与轴有关,而不是单选按钮。可能会有人跳进来回答。 - Hun
新问题:https://dev59.com/3pXfa4cB1Zd3GeqPl-gk - evianpring


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接