Python库matplotlib之四
- 小部件(widget)
- RadioButtons
- 构造器
- APIs
- 应用实列
- Slider
- 构造器
- APIs
- 应用实列
小部件(widget)
小部件(widget)可与任何GUI后端一起工作。所有这些小部件都要求预定义一个Axes实例,并将其作为第一个参数传递。 Matplotlib不会试图布局这些小部件,所以,您必须自己决定Axes的宽度和高度,以便容纳这些小部件。
RadioButtons
RadioButtons的属性
- ax,该属性的类型是Axes,RadioButtons将在其中显示。
- activecolor,该属性的类型是color。所选按钮的颜色。
- labels,该属性的类型是Text列表。按钮标签。
- value_selected,该属性的类型是字符串。当前所选按钮的标签文本。
- index_selected,该属性的类型是int。所选按钮的索引。
构造器
词法:matplotlib.widgets.RadioButtons(ax, labels, active=0, activecolor=None, *, useblit=True, label_props=None, radio_props=None)
构造一个单选按钮。为了使按钮保持响应,您必须保留对此对象的引用。使用 on_clicked方法连接到RadioButton。
参数说明
- ax,该参数类型是Axes。按钮将被放置到该Axes中。
- labels,该参数类型是字符串列表。按钮标签。
- active,该参数类型是int。最初选择的按钮的索引。
- activecolor,该参数类型是color。当前所选按钮的颜色。如果activecolor或 radio_props 中未指定,则默认值为“蓝色”。
- useblit,该参数类型是bool,默认值为True。如果后端支持,使用位块传送,加快绘制速度。
- label_props,该参数类型是dict或dict列表,是可选的。用于标签的Text属性字典。
- radio_props,该参数类型是dict,是可选的。分散字典 用于单选按钮的Collection属性。
APIs
函数 | 说明 |
---|---|
clear() | 将活动按钮重置为最初活动的按钮。 |
disconnect(cid) | 删除连接 ID 为 cid 的观察者 |
on_clicked(func) | 将回调函数 func 连接到按钮单击事件。 |
set_active(index) | 选择带有数字索引的按钮。如果 eventon 为 True,则会触发回调。 |
set_label_props(props) | 设置文本标签的属性。 |
set_radio_props(props) | 设置文本标签的属性。 |
应用实列
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import RadioButtonsfreqs = np.arange(0.2, 2, 0.3)
global w_radio
fig, ax = plt.subplots()
ax.set_ylabel('Frequency', color='#00ff00')
ax.set_xlabel('Time', color='#0000ff')
ax.set_facecolor('#eafff5')
plt.subplots_adjust(left=0.35, bottom=0.1, right=0.9, top=0.9, wspace=0.2, hspace=0.2)plt.subplots_adjust(bottom=0.25)
t = np.arange(0.0, 10.0, 0.01)
s = np.sin(2*np.pi*freqs[0]*t)
l, = plt.plot(t, s, lw=2)def on_clicked(label):global w_radioline_style = ['-', '-.', ':']index = labels.index(label)l.set(linestyle=line_style[index])plt.draw()if __name__ == "__main__":global w_radioax = plt.axes([0.01, 0.5, 0.20, 0.4])labels = ["solid", "dash-dotted", "dotted"]w_radio = RadioButtons(ax, labels, activecolor="#00FF00")w_radio.on_clicked(on_clicked)plt.show()
Slider
Slider的属性
- val,float。滑动条值。
构造器
词法:matplotlib.widgets.Slider(ax, label, valmin, valmax, *, valinit=0.5, valfmt=None, closedmin=True, closedmax=True, slidermin=None, slidermax=None, dragging=True, valstep=None, orientation=‘horizontal’, initcolor=‘r’, track_color=‘lightgrey’, handle_style=None, **kwargs)
构造一个代表浮点范围的滑动条。
在 Axes中创建从 valmin 到 valmax 的滑动条。为了使滑动条保持响应,必须维护对其的引用。调用 on_changed() 连接到滑动条事件。
参数说明
- ax,该参数类型是Axes。按钮将被放置到该Axes中。
- labels,该参数类型是字符串列表。滑动条标签。
- valmin,该参数类型是float。滑动条的最小值。
- valmax,该参数类型是float。滑动条的最大值。
- valinit,该参数类型是float, 默认为0.5。滑动条初始位置。
- valfmt,该参数类型是字符串,默认为None。%-格式滑块值的格式字符串。如果None,则使用ScalarFormatter。
- closemin,该参数类型是bool,默认值为True。滑动条区间底部是否闭合。
- closemax,该参数类型是bool,默认值为True。滑动条区间顶部是否封闭。
- slidermin,该参数类型是Slider,默认为None。不允许当前滑动条的值小于滑动条 slidermin 的值。
- slidermax,该参数类型是Slider,默认为None。不允许当前滑动条的值大于滑动条 slidermax 的值。
- dragging,该参数类型是bool,默认为True。如果为 True,则可以用鼠标拖动滑块。
- valstep,该参数类型是float 或类似数组,默认值为None。如果是浮动的,滑动条将捕捉到 valstep 的倍数。如果是数组,滑动条将捕捉到数组中的值。
- orientation,该参数类型是{‘horizontal’, ‘vertical’}, 默认为’horizontal’。滑动条的方向。
- initcolor,该参数类型是color,默认为’r’。valinit 位置处线条的颜色。设置为None,表示没有线。
- track_color,该参数类型是color,默认为’lightgrey’。背景轨道的颜色。可以通过 track 属性访问,该轨道以进行进一步的样式设置。
- handle_style,该参数类型是dict。滑动条手柄的属性。
APIs
词法:on_changed(func)
将 func 作为回调函数连接到滑块值的更改。
参数
- func,更改滑块时调用的函数。该函数必须接受单个浮点数作为其参数。
返回值
- int,连接id(可用于断开func)。
词法:set_val(val)
将滑动条值设置为 val。
参数
- val,参数类型int。
应用实列
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Sliderfreqs = np.arange(0.2, 2, 0.3)
fig, ax = plt.subplots()
ax.set_ylabel('Frequency', color='#00ff00')
ax.set_xlabel('Time', color='#0000ff')
ax.set_facecolor('#eafff5')
plt.subplots_adjust(left=0.15, bottom=0.1, right=0.9, top=0.9, wspace=0.2, hspace=0.2)plt.subplots_adjust(bottom=0.25)
t = np.arange(0.0, 10.0, 0.01)
s = np.sin(2*np.pi*freqs[0]*t)
l, = plt.plot(t, s, lw=2)def on_changed(val):i = (int)(val % len(freqs))ydata = np.sin(2*np.pi*freqs[i]*t)l.set_ydata(ydata)l.set_color("#0000FF")plt.draw()if __name__ == "__main__":ax = plt.axes([0.2, 0.01, 0.60, 0.2])style = {"facecolor":"#8F0000", "edgecolor":"#00008F"}w_radio = Slider(ax, "Slider", 0.10, len(freqs), track_color="#00FF00", handle_style=style)w_radio.on_changed(on_changed)plt.show()
实列屏幕输出