首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >3个plotly实用进阶范例~

3个plotly实用进阶范例~

作者头像
lyhue1991
发布于 2024-06-03 11:34:34
发布于 2024-06-03 11:34:34
23800
代码可运行
举报
运行总次数:0
代码可运行

本文介绍3个plotly非常实用的高级操作范例:

1,绘制时间序列设置滑块;

2,绘制地图设置高德底图;

3,使用dash构建交互面板;

公众号后台回复关键词:plotly,获取本文jupyter notebook 源代码~

一,绘制时间序列设置滑块

可以使用一个滑块来选择绘图时间范围。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import plotly.express as px 
dfdata = px.data.stocks()

fig = px.line(data_frame=dfdata, x = 'date',y = ['GOOG', 'AAPL', 'AMZN', 'FB', 'NFLX', 'MSFT'])
fig.update_xaxes(dtick="M2",tickformat="%Y-%m-%d",rangeslider=dict(visible=True),
             rangeselector={'buttons': [{'count': 7,
               'label': '1w',
               'step': 'day',
               'stepmode': 'backward'},
              {'count': 1, 'label': '1m', 'step': 'month', 'stepmode': 'backward'},
              {'count': 6, 'label': '6m', 'step': 'month', 'stepmode': 'backward'},
              {'count': 1, 'label': '1y', 'step': 'year', 'stepmode': 'backward'},
              {'step': 'all'}]}
            )
fig.update_layout(#autosize=True,
    #width=1000, 
    #height=600,
    margin=dict(
        r=0, t=0, l=0, b=0, pad=0)
    )
fig.show()
fig.write_html('test.html')

效果如下:

二,绘制地图设置高德底图

plotly绘制地图可以使用高德底图。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

import plotly.express as px 
dfdata = pd.DataFrame({'lat': 39 + np.random.rand(100),
                        'lon': 116+np.random.rand(100),
                       'color': 10*np.random.rand(100),
                       'size': 0.5*np.random.rand(100),
                      })

fig = px.scatter_mapbox(dfdata, lat="lat", 
                        lon="lon", color="color",
                        size="size",            
                        color_continuous_scale=px.colors.cyclical.IceFire, 
                        size_max=15, zoom=10
                       )
basemap_layer = [
    dict(
        below="traces",
        sourcetype="raster",
        sourceattribution="高德地图",
        source=[
            "http://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=7"
        ]
    )
]

fig.update_mapboxes(style='white-bg',zoom=7,layers=basemap_layer)
fig.update_layout(margin=dict(r=0, t=0, l=0, b=0, pad=0))
fig.show()

效果如下:

三,使用dash构建交互面板

使用plotly的dash可以让做出非常丰富的前端交互效果。

详情参考:https://dash.plotly.com/

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import dash
from dash import Dash, dcc, html, Input, Output
import plotly.express as px


external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']

template_list = ['plotly','ggplot2', 'seaborn', 'simple_white',
         'plotly_white', 'plotly_dark', 'presentation', 'xgridoff',
         'ygridoff', 'gridon']

# 1,生成示例数据
dfdata = px.data.stocks()


# 2, 创建Dash app
app = Dash(__name__,external_stylesheets=external_stylesheets)

# 3, 设计页面布局
app.layout = html.Div([
    html.H3(children='头部互联网美股走势数据'),
    dcc.Graph(id='stock-plot'),
    html.Br(),
    html.Label('template'),
    dcc.Slider(
        id='template',
        min=0,
        max=len(template_list)-1,
        value=0,
        marks={i: template_list[i] for i in range(len(template_list))},
        step=1
    ),
    html.Label('font_size'),
    dcc.Slider(
        id='font_size',
        min=10,
        max=20,
        value=15,
        marks={i: str(i) for i in range(10,21)},
        step=1
    )
    
])

# 4, 编写回调函数
@app.callback(
    Output(component_id='stock-plot', component_property='figure'),
    [Input(component_id='template',  component_property='value'),
     Input(component_id='font_size', component_property='value')
    ]
)
def update_figure(template,font_size):
    fig = px.line(data_frame=dfdata, x = 'date',y = ['GOOG', 'AAPL', 'AMZN', 'FB', 'NFLX', 'MSFT'])
    fig.update_xaxes(dtick="M1",tickformat="%Y-%m-%d",rangeslider=dict(visible=True),
                 rangeselector={'buttons': [{'count': 7,
                   'label': '1w',
                   'step': 'day',
                   'stepmode': 'backward'},
                  {'count': 1, 'label': '1m', 'step': 'month', 'stepmode': 'backward'},
                  {'count': 6, 'label': '6m', 'step': 'month', 'stepmode': 'backward'},
                  {'count': 1, 'label': '1y', 'step': 'year', 'stepmode': 'backward'},
                  {'step': 'all'}]}
                )
    fig.layout.template = template_list[template]
    fig.update_layout(autosize=True,
        #width=1000, 
        #height=600,
        margin=dict(
            r=0, t=0, l=0, b=0, pad=0)
        )
    fig.update_layout({"font.size":font_size})
    return fig


# 5, 运行交互页面
if __name__ == '__main__':
    app.run_server(debug=True)
    #app.run(jupyter_mode="tab") #'inline', 'external', 'jupyterlab', 'tab'

运行上述代码,会弹出一个可以交互的网页,效果如下:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法美食屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Javascript设置广告和时间表和数组的学习
1 <html> 2 <head> 3 <meta charset="utf-8"> 4 <title></title> 5 </head> 6 <body> 7 <hr>
别先生
2017/12/29
9490
Javascript设置广告和时间表和数组的学习
JavaScript学习总结(二)
作用:使用了with语句后,在存取对象属性和调用方法时就不用重复指定对象 格式:
roobtyan
2019/02/21
5090
JavaScript基础
脚本语言,语法类似于java(脚本语言又被称为扩建的语言,或者动态语言,是一种编程语言,用来控制软件应用程序,脚本通常以文本(如ASCII)保存,只在被调用时进行解释或编译。)
xiaozhangStu
2023/05/04
4140
JavaScript基础①
你点我一下试试 <a href="javascript: alert('kick your ass');">你点我一下试试</a>
ymktchic
2022/01/18
2.9K0
JavaScript基础①
快速入门JavaScript(一)
1995 年,NetScape (网景)公司,开发的一门客户端脚本语言:LiveScript。后来,请来 SUN 公司的专家来 进行修改,后命名为:JavaScript。 1996 年,微软抄袭 JavaScript 开发出 JScript 脚本语言。 1997 年,ECMA (欧洲计算机制造商协会),制定出客户端脚本语言的标准:ECMAScript,统一了所有客户 端脚本语言的编码方式。
楠羽
2022/11/18
9110
快速入门JavaScript(一)
javascript数组基础
使用以上4个方法时,都是直接在原数组上进行操作,即成功调任何一个方法,原数组都跟着发生相应的改变。并且在添加或删除单元时 length 并不会发生错乱。
timerring
2023/10/13
1920
JavaScript 函数
函数可以把具有相同或相似逻辑的代码“包裹”起来,通过函数调用执行这些被“包裹”的代码逻辑,这么做的优势是有利于精简代码方便复用。
用户9615083
2023/02/28
8430
JavaScript 函数
JAVA保姆式上手教程之JAVAWEB day01-js基础
张哥编程
2024/12/13
860
4篇笔记搞定JavaScript----第三篇
我们使用关键词 new 来创建数组对象。下面的代码定义了一个名为 myArray 的数组对象:
Lemon黄
2019/10/29
3640
4篇笔记搞定JavaScript----第三篇
Javascript提升阶段学习
JavaScript 1:javascript简介   JavaScript是一种脚本语言,能实现网页内容的交互显示,当用户在客户端显示该网页时,浏览器就会执行JavaScript程序,用户通过交互
别先生
2017/12/29
1.3K0
JavaScript---网络编程(2)-函数与数组
上节,学完循环了~ 现在学Javascript的函数和数组。 JavaScript语法 每一种语言都有自己的语法规则,JS语法与Java很像,所以学习起来比较容易。JS中也一样有变量,语句,函数,数组等常见语言组成元素。
谙忆
2021/01/21
4090
JavaScript---网络编程(2)-函数与数组
JavaScript基础
一 JavaScript的基础 1.1 JS的引入方式 1 直接编写 <script> alert('hello yuan') </script> 2 导入文件 <script src="hello.js"></script> 1.2 JS的变量、常量和标识符 1.2.1 JS的变量 1 2 3 x=5 y=6 z=x+y 在代数中,我们使用字母(比如 x)来保存值(比如 5)。通过上面的表达式 z=x+y,我们能够计算出 z
用户1214487
2018/01/24
2.1K0
JavaScript基础
JavaWeb——JavaScript精讲之ECMAScript标准(基本语法、JavaScript对象)
JavaScript不同于HTML、CSS,其是一种客户端脚本语言,运行在客户端浏览器中,每一个浏览器都有JavaScript的解析引擎。其是脚本语言,不需要编译,直接可以被浏览器解析执行。
Winter_world
2020/09/25
9810
JavaWeb——JavaScript精讲之ECMAScript标准(基本语法、JavaScript对象)
系统学习javaweb-06-javascript
parseFloat() 整数字符串仍转换为整数 IsNaN (is not a muber)不是数字返回true,是数字返回false
csxiaoyao
2019/02/20
1.1K0
【JavaScript脚本】——T1基本语法
【JavaScript脚本】——T1基本语法 目录 JavaScript声明 基本输出 外部引用 变量声明 变量命名规则 数据类型 if分支结构  if多分支结构 switch 语句 while循环语句 do-while循环语句 for循环语句 break和continue语句 嵌套for循环 思考与记忆: JavaScript声明 <script></script> 基本输出 <script>     document.write("<h1>Hello World!</h1>"); </script> 外
红目香薰
2022/11/29
3830
【JavaScript脚本】——T1基本语法
大一下学期JavaScript(JS)课后作业整理
这学期学的JavaScript, 把老师留过的课后作业都整理一下发上来, 初学者可以根据案例要求自己制作. 不敢保证我这里发布的代码就是最优解, 不足的地方, 可以指出. (没有排过顺序, 难度等级低)
NothAmor
2022/06/08
5230
javascript入门
入门程序 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>JS入门——helloworld</title> <!-- JavaScript[JS]代码,包含在一对script标签中 script标签可以出现在网页中的任何一个位置 --> <scr
周小董
2019/03/25
8810
【前端】JavaScript 中数组的基本操作及优化题解
首先来看一道基础的题目,题目要求我们对数组中的所有数进行求和,然后计算出数组的平均值。以下是原题目以及初始解法:
CSDN-Z
2024/11/21
1830
【前端】JavaScript 中数组的基本操作及优化题解
JavaScript
JavaScript是一种web前端的描述语言,也是一种基于对象(Object)和事件驱动(Event Driven)的、安全性好的脚本语言。它运行在客户端从而减轻服务器的负担。
py3study
2020/01/19
2.2K0
2022年11月21日13:32:00——T5——JS对象与Date日期函数
其中:dateObject 所指的月份中的某一天,使用本地时间。返回值是 1 ~ 31 之间的一个整数。
红目香薰
2022/11/28
7280
2022年11月21日13:32:00——T5——JS对象与Date日期函数
相关推荐
Javascript设置广告和时间表和数组的学习
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档