python - Python(matplotlib):单击时突出显示 x 轴间隔
问题描述
我有一个简单的情节,包括一个滑块:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider, CheckButtons
def update(val):
x_val = x_factor.val
p.set_data(x, func(x_val))
fig.canvas.draw_idle()
def func(inv):
yy = (1 / x) ** inv
return yy
x = np.arange(400, 2501)
y = func(x)
fig = plt.figure()
ax = fig.subplots()
plt.subplots_adjust(bottom=.6)
p, = ax.plot(x, y)
plt.ylim([0, 1000])
x_slide = plt.axes([.12, .1, .65, .02])
x_factor = Slider(x_slide, 'x', valmin=-3, valmax=0, valinit=0, valstep=.01)
x_factor.on_changed(update)
plt.show()
我想在其中添加一个复选框,我可以在单击标签时在 x 轴上突出显示(也可以关闭)预定义的间隔。我认为这CheckButtons()
可以解决问题,但我只找到了在单击其标签时绘制函数的示例。为了突出我使用的间隔axvspan()
:
def highlights_1():
plt.axvspan(450, 515, color='brown', alpha=.25)
plt.axvspan(525, 600, color='brown', alpha=.25)
plt.axvspan(630, 680, color='brown', alpha=.25)
plt.axvspan(845, 885, color='brown', alpha=.25)
plt.axvspan(1560, 1660, color='brown', alpha=.25)
plt.axvspan(2100, 2300, color='brown', alpha=.25)
def highlights_2():
plt.axvspan(459.25, 525.25, color='grey', alpha=.25)
plt.axvspan(541.40, 577.40, color='grey', alpha=.25)
plt.axvspan(649.25, 680.25, color='grey', alpha=.25)
plt.axvspan(2104.05, 2284.05, color='grey', alpha=.25)
我还尝试将上面链接的示例改编为我的用例。我试过了:
cbax = plt.axes([.12, 0.5, .3, 0.2])
cb = CheckButtons(cbax, 'Highlights-1', [True])
cb.on_clicked(highlights_1())
但最终以情节中的情节结束。有人知道怎么做这个吗?
解决方案
推荐阅读
- servlets - 为什么我在运行动态 Web 项目时收到 HTTP 404 错误?
- spring-mvc - Spring MVC 返回视图和下载文件
- prolog - 求和比较规则失败
- android - 某些设备上的 Android SoundPool 问题
- python - 如何更改系列中的某些项目(取决于某些列表中的项目是否)
- bash - Bash for 循环解析为单个字符串
- c - 在 C 中使用 switch
- c - 访问 void * 块中的特定字节区域
- flutter - Flutter 使 showDateRangePicker 更小
- javascript - 如何处理这个 useEffect 问题,其中在设置之前引用了一个变量