在 Matplotlib 中自定义检查按钮

mgl*_*ner 3 python matplotlib

我正在尝试定制CheckButtons

\n\n
rax = plt.axes(\n        [0.55, 0.8, 0.08, 0.08],\n        facecolor=secondary_color\n    )\n\n    check = CheckButtons(rax, ('Mn vs. Pn', '\xc3\x98Mn vs. \xc3\x98Pn'), (True, True))\n
Run Code Online (Sandbox Code Playgroud)\n\n

但找不到设置按钮框、标记和字体颜色的不透明度(alpha 参数)的方法。

\n\n

任何帮助将不胜感激

\n

Imp*_*est 5

如的文档matplotlib.widgets.CheckButtons中所示,标签、按钮矩形和(标记的)线条可以从类实例访问。
check = CheckButtons(..)

  • check.rectangles返回按钮背景的列表为matplotlib.patches.Rectangle
  • check.labels返回标签列表为matplotlib.text.Text
  • check.linesmatplotlib.lines.Line2D返回用作标记的两个元组的列表。

都是有set_alpha方法的。

要设置背景,最简单的方法是提供已设置 alpha 值的颜色,例如col = (0,0,1,0.2)最后一个值是蓝色的 alpha。可以使用参数将其设置为复选按钮轴facecolor

这是一个完整的例子。

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

fig= plt.figure(figsize=(4,1.5))
ax = plt.axes([0.4, 0.2, 0.4, 0.6] )
ax.plot([2,3,1])
col = (0,0.3,0.75,0.2)
rax = plt.axes([0.1, 0.2, 0.2, 0.6], facecolor=col )
check = CheckButtons(rax, ('red', 'blue', 'green'), (1,0,1))
for r in check.rectangles:
    r.set_facecolor("blue") 
    r.set_edgecolor("k")
    r.set_alpha(0.2) 

[ll.set_color("white") for l in check.lines for ll in l]
[ll.set_linewidth(3) for l in check.lines for ll in l]
for i, c in enumerate(["r", "b", "g"]):
    check.labels[i].set_color(c)
    check.labels[i].set_alpha(0.7)

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述