如何调整 matplotlib 单选按钮的大小和纵横比?

Posted

技术标签:

【中文标题】如何调整 matplotlib 单选按钮的大小和纵横比?【英文标题】:How do I adjust the size and aspect ratio of matplotlib radio buttons? 【发布时间】:2016-07-30 22:05:16 【问题描述】:

我已经尝试了几个小时来纠正一个简单的单选按钮列表的大小和纵横比,但没有成功。 首先,导入模块:

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)

这会导致椭圆形单选按钮太大,因此会在垂直方向上相互重叠。

如果我使用 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)

然后我得到了单选按钮的实际圆圈,但它们仍然太大。

如果我将高度降低到 0.3,仍然使用设置为 'equal' 的 'aspect' 参数,我只会得到先前结果的更小版本(更小的按钮,但在更小的轴实例中仍然重叠)。

我真正想做的是有一个非常窄的宽度和一个很大的高度,并且仍然有不重叠的圆形单选按钮:

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)

但这会生成垂直椭圆形的单选按钮:

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:
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()

然后你会得到附图。

【讨论】:

还有一个问题:似乎所有可以很好地工作的示例在传递给 plt.axes 的矩形中使用相同的宽度和高度(在您的情况下该值为 0.6)。但我希望得到与您相同的结果,但宽度较窄。比如说,0.1 宽度和 0.6 高度。我怎样才能在没有失真的情况下做到这一点? 我问的原因是这些单选按钮将是其右侧绘图的窄边栏。所以它应该是窄而高的。例如,这不起作用: 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' 则不完全是我想要的 为此我需要查找源代码。你为什么不发布那个具体的问题?它与轴而不是单选按钮有关。有人可能会跳进来回答。 新问题:***.com/questions/36520864/…【参考方案2】:

感谢@evianpring,我在这里找到了正确的 sn-p How do I get narrow width and a large height on a RadioButtons widget, and still have round radio buttons that don't overlap?

【讨论】:

以上是关于如何调整 matplotlib 单选按钮的大小和纵横比?的主要内容,如果未能解决你的问题,请参考以下文章

SVG 顶部反应单选按钮组的高级定位和大小调整

如何在 GridBagLayout 中调整 JPanel 的大小?

在 matplotlib 中水平显示单选按钮

如何使用 matplotlib 调整子图中的图形大小

如何让 Matplotlib 图形在 Tkinter GUI 中正确滚动+调整大小

Delphi 如何操作外部程序的控件(如按钮,文本框,单选按钮等)