首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用单个滑块创建具有可滚动x轴的多个绘图

如何使用单个滑块创建具有可滚动x轴的多个绘图
EN

Stack Overflow用户
提问于 2018-05-29 17:51:32
回答 2查看 1.4K关注 0票数 1

我打算创建2-3个共享在一个共同的时间轴上,可以与单个滑块交互滚动。此外,有一个约束,在采样频率是不同的每个变量,但有相同的时间窗口。

代码语言:javascript
复制
x  - time
y1 - values sampled every 1 second
y2 - values sampled every 10 seconds
y3 - values sampled every 100 seconds 

我们怎么能这么做。

已经尝试过此示例代码

代码语言:javascript
复制
import matplotlib.pyplot as plt
from ipywidgets import interact
%matplotlib inline

def f(n):
    plt.plot([0,1,2],[0,1,n])
    plt.show()
interact(f,n=(0,10))

我想要类似的东西,唯一的变化是x和y轴数据是常量,滑块小部件用来滚动图的左、右(x轴),在图形显示上有一个特定的时间窗口。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-29 04:22:24

下面实现的片段。

  1. 加载所有图表,并使用plt.xlim(min_x,max_x)操作具有滑块功能的xlim selection_range_slider = widgets.SelectionRangeSlider( options=options,index=index,description=‘时间滑块’,方位=‘水平’,layout={‘宽度’:‘1000 15’},continuous_update=False ) #selection_range_slider def print_date_range(date_range):打印(Date_range) plt.figure(num=None,figsize=(15,4),dpi=80,facecolor='w',edgecolor='k') min_x=date_range max_x=date_range1 ax1 = plt.subplot(311) plt.plot(Data_1.Timestamp,Data_1.value,'r') plt.setp(ax1.get_xticklabels(),fontsize=6,visible=False) plt.xlabel('Data_1') ax1.xaxis.set_label_coords(1.05,0.5) # share x only ax2 = plt.subplot(312,( sharex=ax1) plt.plot(Data_2.Timestamp,Data_2.value,'b') #使这些滴答标签看不见plt.setp(ax2.get_xticklabels(),visible=False) plt.xlabel('Data_2') ax2.xaxis.set_label_coords(1.05,0.5) # share x和y ax3 = plt.subplot(313,sharex=ax1) plt.plot(Data_3.Timestamp,Data_3.value,'g') ax3.xaxis.set_label_coords(1.05,0.5) #plt.xlim(0.01,5.0) plt.xlim(min_x,max_x) plt.show() #plt.xlabel('Data_3') widgets.interact( print_date_range,date_range=selection_range_slider );
票数 0
EN

Stack Overflow用户

发布于 2018-05-31 16:18:26

部分解决了该问题的交互性位。

随着滑块的移动,X轴可以滚动。

代码语言:javascript
复制
%matplotlib inline
from ipywidgets import interactive
import matplotlib.pyplot as plt
import numpy as np

def f(m):
    plt.figure(2)
    x = np.linspace(-10, 10, num=1000)
    plt.plot(x,x)
    #plt.plot(x, m * x)
    plt.xlim(m+2, m-2)
    plt.show()

interactive(f, m=(-2.0, 2.0))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50590175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档