使用dash和plotly画出sin函数随振幅、角频率、相位变化的关系

简介: 使用dash和plotly画出sin函数随振幅、角频率、相位变化的关系

如图所示,需要使用python的dash,plotly模块来画图0a414f59c2c04c57bdd8d4734b20bc8e.png

# 分析开仓的时间分布情况
import numpy as np
import pandas as pd
import dash
from dash.dependencies import Input, Output
import dash_core_components as dcc
import dash_html_components as html
import plotly.express as px
import plotly.offline as py
import plotly.graph_objs as go
from plotly.subplots import make_subplots
import dash_bootstrap_components as dbc
markdown_text = '''
#### 图形说明
1. 分析正弦波曲线如何随着振幅、相位和角频率的变化而变化.
'''
app = dash.Dash(
    external_stylesheets=[dbc.themes.BOOTSTRAP]
)
app.layout = html.Div([
    # 类型选择
    html.Label('选择幅度大小',style = {'display': 'inline-block',"padding-right":"3%","padding-left":"3%","color":"blue"}),
    html.Div([
                dcc.Slider(
                    id='amplitude_value',
                    min=-20,
                    max=20,
                    step=1,
                    value=20,
                    marks={
                    i:str(i) for i in range(-20,21)}
                ),
            ]),
    html.Label('选择角频率大小',style = {'display': 'inline-block',"padding-right":"3%","padding-left":"3%","color":"blue"}),
    html.Div([
                dcc.Slider(
                    id='frequency_value',
                    min=1,
                    max=50*2*np.pi,
                    step=1,
                    value=40*2*np.pi,
                    marks={
                    i:str(i) for i in range(1,int(50*2*np.pi) ) if i%5==0 }
                ),
            ]),
    html.Label('选择相位大小',style = {'display': 'inline-block',"padding-right":"3%","padding-left":"3%","color":"blue"}),
    html.Div([
                dcc.Slider(
                    id='phase_value',
                    min=-np.pi,
                    max=np.pi,
                    step=0.1*np.pi,
                    value=-0.4*np.pi,
                    marks={
                    i:str(i) for i in range(int(-np.pi),int(np.pi))}
                ),
            ]),
    html.Div(id='slider-output-container'),
    dcc.Graph(id='indicator-graphic'), 
    # dcc.Markdown(children=markdown_text),
    # 图形主题类型
    html.Label('选择图形的主题',style = {'display': 'inline-block',"padding-right":"3%","padding-left":"3%","color":"blue"}),
    html.Div([
            dcc.Dropdown(
                id='style_value',
                options=[{'label': i, 'value': i} for i in ['ggplot2', 'seaborn', 'simple_white', 'plotly',
                                                'plotly_white', 'plotly_dark', 'presentation', 'xgridoff',
                                                'ygridoff', 'gridon', 'none']],
                value='plotly',
            ),
        ], style = {'display': 'inline-block',"width" : "10%"},),
    dcc.Markdown(children=markdown_text),
    ])
@app.callback(
    dash.dependencies.Output('slider-output-container', 'children'),
    [ 
    dash.dependencies.Input('amplitude_value', 'value'),
    dash.dependencies.Input("frequency_value" ,"value"), 
    dash.dependencies.Input("phase_value" ,"value"), 
     ])
def update_output(amplitude_value,frequency_value,phase_value):
    return f"您选择的幅度为:{amplitude_value}    ,    角频率为:{frequency_value}    ,    相位为:{phase_value}"
@app.callback(
    dash.dependencies.Output('indicator-graphic', 'figure'),
    [ 
    dash.dependencies.Input('amplitude_value', 'value'),
    dash.dependencies.Input("frequency_value" ,"value"), 
    dash.dependencies.Input("phase_value" ,"value"), 
    dash.dependencies.Input('style_value' ,"value"), 
     ])
def update_graph(amplitude_value,frequency_value,phase_value,style_value):
    x = 0.001*np.arange(1,1001)
    y = [amplitude_value*np.sin(frequency_value*i+phase_value) for i in x]
    # 根据data的数据画一个柱状图
    fig = go.Figure(data=go.Scatter(
                    x=x,
                    y=y,
                    mode = "lines+markers"
                    ))
    fig["layout"]["template"] = style_value
    fig["layout"]["height"] = 800
    return fig 
if __name__ == '__main__':
    app.run_server()
目录
相关文章
|
9月前
|
安全
选择最佳供应商:ERP系统的供应商选择与评估方法论
选择最佳供应商:ERP系统的供应商选择与评估方法论
1159 0
|
8月前
|
机器学习/深度学习 存储 监控
基于YOLOv8深度学习的水稻害虫检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
基于YOLOv8深度学习的水稻害虫检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
|
机器学习/深度学习 数据可视化 JavaScript
Plotly可视化介绍
Plotly可视化介绍
236 0
|
3月前
|
机器学习/深度学习 人工智能 算法
深度学习在计算机视觉中的突破与未来趋势###
【10月更文挑战第21天】 近年来,深度学习技术极大地推动了计算机视觉领域的发展。本文将探讨深度学习在图像识别、目标检测和图像生成等方面的最新进展,分析其背后的关键技术和算法,并展望未来的发展趋势和应用前景。通过这些探讨,希望能够为相关领域的研究者和从业者提供有价值的参考。 ###
172 4
|
9月前
|
JSON 前端开发 API
API商品接口对接使用:从理论到实践
随着电子商务的飞速发展,API商品接口已成为现代电子商务应用程序不可或缺的一部分。通过API商品接口,开发者可以轻松地从其他应用程序或服务中获取商品信息,实现快速、高效的电子商务功能。本文将探讨API商品接口的概念、对接使用的方法以及一个实际案例。
|
9月前
|
数据可视化 JavaScript 前端开发
Python可视化Dash教程简译(一)
Python可视化Dash教程简译(一)
153 0
|
小程序 JavaScript API
小程序获取当前日期和时间点的方法
小程序获取当前日期和时间点的方法
232 0
|
JavaScript
vue动态添加很多的class类名
vue动态添加很多的class类名
133 0
|
前端开发 数据可视化 JavaScript
使用Dash快速构建你的数据可视化前端
使用Dash快速构建你的数据可视化前端
586 0
|
存储 算法 关系型数据库
【CEPH-初识篇】ceph详细介绍+“ 一 ” 篇解决ceph集群搭建, “ 三 ” 大(对象、块、文件)存储使用(上)
【CEPH-初识篇】ceph详细介绍+“ 一 ” 篇解决ceph集群搭建, “ 三 ” 大(对象、块、文件)存储使用
1730 0

热门文章

最新文章