首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为时间实现ipywidget滑块

为时间实现ipywidget滑块
EN

Stack Overflow用户
提问于 2020-03-30 03:42:20
回答 2查看 331关注 0票数 0

我正在尝试使用ipywidgets在Jupyter Notebook中创建一个时间滑块。我想采用列表实验数据(见下图),并在滑块的帮助下控制数值范围。图形应该是力-位移图形,随时间演变:

这是我的python代码:

代码语言:javascript
复制
from ipywidgets import IntSlider, interact, FloatSlider

u = fdat1['C_1_Weg_R4[mm]'].values
f = fdat1['C_1_Kraft_R4[kN]'].values
t = fdat1['S/No'].values

@interact(t = IntSlider(min = 0, max = max(fdat0['S/No'].values)))
def aa_(t):
    plt.plot(f[t],u[t])
    plt.grid()
    plt.xlabel("force [kN]")
    plt.ylabel("displacement [mm]")
    plt.title("Load-displacement curve for \nexperiment")

fdat1是表格数据的名称。我也考虑过使用"C_1_Zeits“列作为我的滑块值,但这些不是整数值。

问题是什么都没有绘制出来,但是滑块工作了,图形改变了比例。

我已经在网上搜索了一段时间了,真的很感谢一些帮助。

提前谢谢你!

编辑:

代码语言:javascript
复制
from ipywidgets import IntSlider, interact, FloatSlider

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.DataFrame.from_records(
    [np.linspace(0,30, num=30), np.linspace(0,20, num=30), ]).T

df.columns=['A', 'B']

@interact(t = IntSlider(min = 0, max = 21))
def aa_(t):
    plt.scatter(df['A'], df['B'])
    plt.grid()
    plt.xlabel("force [kN]")
    plt.ylabel("displacement [mm]")
    plt.title("Load-displacement curve for \nexperiment")
    plt.xlim(0, 30)
    plt.ylim(0, 30)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-08 04:53:34

所以,基本上,这应该是正确的代码:

代码语言:javascript
复制
from ipywidgets import IntSlider, interact, FloatSlider

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt


u = fdat1['C_1_Weg_R4[mm]'].values     #loads displacement values from fdat1
f = fdat1['C_1_Kraft_R4[kN]'].values   #loads force values from fdat1


df = pd.DataFrame.from_dict([u,f]).T   #creates a dataframe

df.columns=['A', 'B']

@interact(t = IntSlider(min = 0, max = df.shape[0]))   #interactive scatterplot with a slider for time
def scatterplot_(t):
    plt.scatter(df.loc[0:t,'A'], df.loc[0:t,'B'])
    plt.grid()
    plt.xlabel("force [kN]")
    plt.ylabel("displacement [mm]")
    plt.title("Load-displacement curve for \nexperiment")
    plt.xlim(-5, 5)
    plt.ylim(-25, 25)
票数 0
EN

Stack Overflow用户

发布于 2020-04-01 16:01:47

在绘图函数中,根据滑块值创建results数据帧的切片。

代码语言:javascript
复制
from ipywidgets import IntSlider, interact, FloatSlider

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

results = pd.DataFrame.from_records(
    [np.linspace(0,30, num=30), np.linspace(0,20, num=30), ]).T

results.columns=['A', 'B']

@interact(t = IntSlider(min = 0, max = 21))
def aa_(t):
    df = results.iloc[:t]    # make the slice here
    plt.scatter(df['A'], df['B'])
    plt.grid()
    plt.xlabel("force [kN]")
    plt.ylabel("displacement [mm]")
    plt.title("Load-displacement curve for \nexperiment")
    plt.xlim(0, 30)
    plt.ylim(0, 30)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60919828

复制
相关文章

相似问题

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