为 matplotlib Slider 小部件设置刻度标签
Set tick labels for matplotlib Slider widgets
matplotlib 中的 slider
行为随着最近的更新而改变。使用以下代码:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
fig = plt.figure(figsize=(8, 4))
ax_main = plt.axes([0.15, 0.3, 0.7, 0.6])
ax_skal = plt.axes([0.2, 0.18, 0.65, 0.02], facecolor="lightgrey")
s_skal = Slider(ax_skal, 'time scale', 0.5, 2, valinit=1, valfmt='%0.1f')
#ax_skal.xaxis.set_visible(True)
sl_xticks = np.arange(0.6, 2, 0.2)
ax_skal.set_xticks(sl_xticks)
plt.show()
我们可以在 matplotlib 3.3.1 及更早版本中生成带有刻度标签的 slider
对象。
但是,在 matplotlib 3.5.1 中,刻度标签已经消失。
将 x-axis
设置为可见的建议 无效,因为 x-axis
属性 visible
已经 True
,属性 in_layout
。那么,我们如何为滑块对象设置刻度标签呢?
因为我在这个问题上花了一些时间,所以我想我把答案留在这里。事实证明,更新后的滑块版本占用了它所在的轴 space,并从用于呈现布局的艺术家列表中删除了 x- 和 y-axes 及其脊柱对象。因此,我们必须在创建 slider
对象后再次将 x-axis
对象(或垂直滑块 y-axis
对象)添加到轴:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
fig = plt.figure(figsize=(8, 4))
ax_main = plt.axes([0.15, 0.3, 0.7, 0.6])
ax_skal = plt.axes([0.2, 0.18, 0.65, 0.02], facecolor="lightgrey")
s_skal = Slider(ax_skal, 'time scale', 0.5, 2, valinit=1, valfmt='%0.1f')
ax_skal.add_artist(ax_skal.xaxis)
sl_xticks = np.arange(0.6, 2, 0.2)
ax_skal.set_xticks(sl_xticks)
plt.show()
示例输出:
matplotlib 中的 slider
行为随着最近的更新而改变。使用以下代码:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
fig = plt.figure(figsize=(8, 4))
ax_main = plt.axes([0.15, 0.3, 0.7, 0.6])
ax_skal = plt.axes([0.2, 0.18, 0.65, 0.02], facecolor="lightgrey")
s_skal = Slider(ax_skal, 'time scale', 0.5, 2, valinit=1, valfmt='%0.1f')
#ax_skal.xaxis.set_visible(True)
sl_xticks = np.arange(0.6, 2, 0.2)
ax_skal.set_xticks(sl_xticks)
plt.show()
我们可以在 matplotlib 3.3.1 及更早版本中生成带有刻度标签的 slider
对象。
但是,在 matplotlib 3.5.1 中,刻度标签已经消失。
将 x-axis
设置为可见的建议 x-axis
属性 visible
已经 True
,属性 in_layout
。那么,我们如何为滑块对象设置刻度标签呢?
因为我在这个问题上花了一些时间,所以我想我把答案留在这里。事实证明,更新后的滑块版本占用了它所在的轴 space,并从用于呈现布局的艺术家列表中删除了 x- 和 y-axes 及其脊柱对象。因此,我们必须在创建 slider
对象后再次将 x-axis
对象(或垂直滑块 y-axis
对象)添加到轴:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
fig = plt.figure(figsize=(8, 4))
ax_main = plt.axes([0.15, 0.3, 0.7, 0.6])
ax_skal = plt.axes([0.2, 0.18, 0.65, 0.02], facecolor="lightgrey")
s_skal = Slider(ax_skal, 'time scale', 0.5, 2, valinit=1, valfmt='%0.1f')
ax_skal.add_artist(ax_skal.xaxis)
sl_xticks = np.arange(0.6, 2, 0.2)
ax_skal.set_xticks(sl_xticks)
plt.show()
示例输出: