前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >关于Python可视化Dash工具-dash核心组件和html组件

关于Python可视化Dash工具-dash核心组件和html组件

作者头像
python与大数据分析
发布于 2022-03-11 06:08:54
发布于 2022-03-11 06:08:54
1.6K00
代码可运行
举报
运行总次数:0
代码可运行

关于Python可视化Dash工具,不能不提dash核心组件和html组件,用户可以使用Python结构和dash-html-components库来构建布局,而不是编写HTML或使用HTML模板引擎 。dash-html-components库和标准的html还是有点区别的。以下内容来自dash官网的介绍:

如果使用的是HTML组件,那么还可以访问诸如style、class和id之类的属性。

HTML元素和破折号类基本相同,但有几个关键区别:

  • style属性是字典
  • 样式字典中的属性是大小写的
  • 类键被重命名为className
  • 以像素为单位的样式属性可以仅作为数字提供,而不使用px单位

下面的例子是html组件的一些常规用法,包括style,classname,id的使用,暂未使用css文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output, State, MATCH, ALL
import plotly.express as px
import random as rn
app = dash.Dash(__name__, suppress_callback_exceptions=True)
# 一个网站的CSS都是一个单独的样式表的,在dash中任何放在assets中的CSS外部样式都会被自动加载
# 创建一个style.css文件来设置背景颜色
# body {
#     background-color:green;
# }
app.layout = html.Div([
    html.H1('Hello Dash'),
    html.Div([
        html.P('Dash P 测试1'),
        html.P("Dash P 测试2"),
        html.Div('Div with style 测试', style={'color': 'blue', 'fontSize': 14}),
        html.P('Dash P 测试2 with style 测试', className='my-class', id='my-p-element'),
        html.Img(src="assets/aaaa.jpg",style={"height":"200px"})
    ], style={'marginBottom': 50, 'marginTop': 25})
])# dash_html_components支持className,id,也支持style
if __name__ == '__main__':
    app.run_server(debug=True)

访问127.0.0.1:8050即可

HTML的CSS文件默认是放在asset目录下的,无需指定路径。在这里定义了body,li和li:hover(锚定)的css样式。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/* body background */
body {
    background-color:white;
    width:100%;
    height:100%;
    margin:0px;
}

/* li  */
li {
    color:blue;
    font-size: 2rem;
    font-weight: bold;
    transition: all 0.2s ease-in-out;
}
 
li:hover {
    transform: scale(1.15);
}

下面的例子很简单,通过html.UI,html.li遍历python变量生成列表值,鼠标指向列表值,列表值会增大。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sports_lists = [
    "" + "足球",
    "" + "篮球",
    "" + "排球",
    "" + "羽毛球",
    "" + "乒乓球",
    "" + "网球",
]

# 应用列表解析式动态生成HTML网页
app.layout = html.Ul([html.Li(sport) for sport in sports_lists])

接下来要定义一个类似大屏风格展示的CSS,要确保该展示能够随着屏幕分辨率的变化而保持相对稳定,首先定义了个顶层的container,接下来是logo区域,顶部样式区域,中间区域,和底部区域。以不同颜色区隔开来。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#container {
    width: 100vw;
    height: 100vh;
}
/*顶部logo条带样式*/
#logo {
    width:100%;
    height:10%;
    background-image:url("npp.png");
    background-repeat:no-repeat;
    background-size:100% 100%;
}
/*顶部样式*/
#header {
    width:100%;
    height:13%;
    background-color:darkorchid;
}
 /*中间部分面板样式*/
 #main {
     width:100%;
     height:70%;
     background-color:hotpink;
 } 
 /*底部面板样式*/
#footer {
    width:100%;
    height:7%;
    background-color:rgb(126, 186, 114);
}

在dash中也很简单,主要通过id来进行标识。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app.layout=html.Div([html.Div('Div logo', id='logo'),
                     html.Div('Div header', id='header'),
                     html.Div('Div main',id='main'),
                     html.Div('Div footer', id='footer')]
                    ,id='container')

最后的展示效果如下:

大屏的部分再进一步细化,主要是细化中间部分(main),中间部分首先分为左中右,左边再区分成上中下区域,同样需要确保比例是固定的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/*左侧部分面板样式*/
#mleft {
    width:20%;
    height:100%;
    background-color:black;
    float:left;
} 
/*中间部分面板样式*/
#mmap {
    width:60%;
    height:100%;
    float:left;
} 
/*右侧部分面板样式*/
#mright {
    width:20%;
    height:100%;
    background-color:rgb(186, 218, 199);
    float:left;
} 
/*左侧上面部分分面板样式*/
#left-top {
    width:100%;
    height:33%;
    background-color:lightblue;
} 
/*左侧中间部分面板样式*/
#left-middle {
    width:100%;
    height:33%;
    background-color:greenyellow;
} 
/*左侧右侧部分面板样式*/
#left-right {
    width:100%;
    height:33%;
    background-color:rgb(179, 173, 230);
    float:left;
}

对原来的dash再次修改,不断增加层级。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app.layout=html.Div([html.Div('Div logo', id='logo'),
                     html.Div('Div header', id='header'),
                     html.Div([
                         html.Div([
                             html.Div('Div left-top', id='left-top'),
                             html.Div('Div left-middle', id='left-middle'),
                             html.Div('Div left-bottom', id='left-bottom'),
                         ], id='mleft'),
                         html.Div('Div map', id='mmap'),
                         html.Div('Div right', id='mright')]
                         ,id='main'),
                     html.Div('Div footer', id='footer')]
                    ,id='container')

展示的效果如下,通过缩小浏览器窗口,显示比例是固定的。

接下来再加入html组件和核心组件,测试table组件、tr组件、td组件和下拉列表组件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
app.layout=html.Div([html.Div('Div logo', id='logo'),
                     html.Div('Div header', id='header'),
                     # html.Div('Div main',id='main'),
                     html.Div([
                         #html.Div('Div left', id='mleft'),
                         html.Div([
                             html.Div('Div left-top', id='left-top'),
                             html.Div('Div left-middle', id='left-middle'),
                             html.Div('Div left-bottom', id='left-bottom'),
                         ], id='mleft'),
                         html.Div([
                             html.Table([
                                 html.Tr([
                                     html.Td('第一行第一列'),
                                     html.Td('第一行第二列'),
                                     html.Td('第一行第三列')
                                 ]),
                                 html.Tr([
                                     html.Td('第二行第一列'),
                                     html.Td('第二行第二列'),
                                     html.Td('第二行第三列')
                                 ]),
                                 html.Tr([
                                     html.Td('第三行第一列'),
                                     html.Td('第三行第二列'),
                                     html.Td('第三行第三列')
                                 ])]
                             ),
                             html.H1('下拉选择'),
                             html.Br(),
                             dcc.Dropdown(options=[
                                 {'label':'选项一','value':1},{'label':'选项二','value':2},{'label':'选项三','value':3}]),
                         ], id='mmap'),
                         html.Div('Div right', id='mright')
                     ],id='main'),
                     html.Div('Div footer', id='footer')]
                    ,id='container')

展示效果如下

说实在的,UI对一个程序员来说真是个考验,缺乏足够的审美眼光,只能确保系统正常使用,当然对我而言足够了。

后续会在这个大框架基础继续完善,进一步开启回调的学习,并和图表进行结合。

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

本文分享自 python与大数据分析 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
关于Python可视化Dash工具-回调
Dash中的「回调」(callback)是以装饰器的形式,配合自编回调函数,实现前后端异步通信交互。
python与大数据分析
2022/03/11
6830
关于Python可视化Dash工具-回调
用Python制作酷炫的可视化大屏,特简单!
在数据时代,我们每个人既是数据的生产者,也是数据的使用者,然而初次获取和存储的原始数据杂乱无章、信息冗余、价值较低。
小F
2021/12/27
2.1K0
用Python制作酷炫的可视化大屏,特简单!
使用Dash和Plotly进行交互式可视化
交互式数据可视化对探索性数据分析具有重要影响。在将任何描述性或预测性算法应用于数据集之前,必须首先了解这些特征如何相互关联以及它们如何在内部分布。许多可视化库提供了满足此要求的多种类型的图表。但另一个显而易见的事情是,为每个功能执行相同的绘图工作并滚动每个图表以比较每个功能的结果是一项艰巨的任务。
代码医生工作室
2019/06/21
8.7K0
使用Dash和Plotly进行交互式可视化
【Python】太6了!用Python快速开发数据库入库系统
这是我的系列教程「Python+Dash快速web应用开发」的第十二期,在以前撰写过的静态部件篇(中)那期教程中,我们介绍过在Dash中创建静态表格的方法。
黄博的机器学习圈子
2021/04/16
1.5K1
【Python】太6了!用Python快速开发数据库入库系统
(数据科学学习手札108)Python+Dash快速web应用开发——静态部件篇(上)
   这是我的系列教程Python+Dash快速web应用开发的第六期,在上一期的文章中,我们完成了对Dash中回调交互高级特性的探讨,在今后陆续推出的教程内容中,我们将一起来学习Dash生态中那些丰富的页面部件,从而赋予我们打造各种强大交互式web应用的能力。
Feffery
2021/02/25
1.4K0
(数据科学学习手札108)Python+Dash快速web应用开发——静态部件篇(上)
(数据科学学习手札103)Python+Dash快速web应用开发——页面布局篇
本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介    这是我的系列教程Python+Dash
Feffery
2021/01/21
2.2K0
(数据科学学习手札110)Python+Dash快速web应用开发——静态部件篇(下)
这是我的系列教程Python+Dash快速web应用开发的第八期,在上一期的文章中,我们对Dash生态里常用的渲染网页静态表格的方法做了一系列的介绍,使得我们可以配合pandas渲染出灵活丰富的网页静态表格。
Feffery
2021/03/08
1.8K0
4.HTML样式布局区块标签元素介绍
本章节,主要介绍HTML布局与区块的元素介绍, 比如头部,中部,尾部以及行内区块与行外区块等,具体讲解如下述所示。
全栈工程师修炼指南
2023/03/21
1.5K0
4.HTML样式布局区块标签元素介绍
(数据科学学习手札112)Python+Dash快速web应用开发——表单控件篇(上)
   这是我的系列教程Python+Dash快速web应用开发的第九期,在之前三期的教程中,我们针对Dash中经常会用到的一些静态部件进行了较为详细的介绍,从而get到在Dash应用中组织静态内容的常用方法。
Feffery
2021/03/16
2.2K0
(数据科学学习手札112)Python+Dash快速web应用开发——表单控件篇(上)
基于HTML美食餐饮文化项目的设计与实现 HTML+CSS上海美食介绍网页(8页) 大学生美食文化网站制作 简单餐饮文化网页设计成品
✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (110套) 】 🌎超炫酷的Echarts大屏可视化源码:【🔰 echarts大屏展示大数据平台可视化(150套) 】 🎁 免费且实用的WEB前端学习指南: 【📂web前端零基础到高级学习视频教程 120G干货分享】 🥇 关于作者: 历任研发工程师,
IT司马青衫
2022/08/17
9240
基于HTML美食餐饮文化项目的设计与实现 HTML+CSS上海美食介绍网页(8页) 大学生美食文化网站制作 简单餐饮文化网页设计成品
(数据科学学习手札102)Python+Dash快速web应用开发——基础概念篇
   这是我的新系列教程Python+Dash快速web应用开发的第一期,我们都清楚学习一个新工具需要一定的动力,那么为什么我要专门为Dash制作一个系列教程呢?
Feffery
2021/01/13
2.1K0
(数据科学学习手札102)Python+Dash快速web应用开发——基础概念篇
03.Python Dash网页开发:多页面网站制作
需求:写一个多网页的网站,包括header、footer、菜单包括主页home、博客blog(外部链接到博客)、about(自我介绍页面)
生信探索
2023/02/14
1.4K0
Dash学习记录1
Dash是用于构建Web分析应用程序的高效Python框架。Dash是写在Flask,Plotly.js和React.js之上,是使用纯Python的高度自定义用户界面构建数据可视化应用程序的理想选择。它特别适合使用Python处理数据的任何人。通过几个简单的模式,Dash提取了构建基于Web的交互式应用程序所需的所有技术和协议。 Dash非常简单,仅仅需要一个下午写Python代码就可以完成。
用户1359560
2021/03/04
3.1K1
Dash学习记录1
HTML, CSS学习笔记(完整版)[通俗易懂]
.htm是早期的后缀。由于那时仅仅能支持长度为3的后缀。因此html与htm是一样的。
全栈程序员站长
2022/07/10
8730
(数据科学学习手札109)Python+Dash快速web应用开发——静态部件篇(中)
   这是我的系列教程Python+Dash快速web应用开发的第七期,在上一期的文章中,我们对Dash生态里常用的一些简单静态部件进行了介绍和功能展示,并且get到dcc.Markdown()这种非常方便的静态部件。
Feffery
2021/03/04
1.7K0
(数据科学学习手札109)Python+Dash快速web应用开发——静态部件篇(中)
HTML+CSS提升小实战
本文介绍了CSS的基础知识,包括CSS盒模型、选择器、常用属性以及深入解析了CSS的布局、响应式设计等。通过本文的学习,读者可以掌握CSS的语法和基本使用方法,能够编写出符合Web标准的网页。
别先生
2017/12/29
3K0
HTML+CSS提升小实战
Dash 2.17版本新特性介绍
  大家好我是费老师,不久前Dash发布了其2.17.0版本,执行下面的命令进行最新版本Dash的安装:
Feffery
2024/05/07
2220
Dash 2.17版本新特性介绍
HTML+CSS,PC端/手机端公用部分样式代码整理(自己收藏)
我们一般都会提一个 .overflow {overflow:hidden} 方便布局,也可以有效的阻止移动端上下左右拖动问题(溢出问题)
用户5997198
2019/08/12
2.9K0
一篇文章带你了解HTML的网页布局结构
网页布局有很多种方式,一般分为以下几个部分:头部区域、菜单导航区域、内容区域、底部区域。
Python进阶者
2021/08/21
1.2K0
关于游戏介绍的HTML网页设计 HTML5期末考核大作业 HTML静态游戏网页作业 web前端开发技术 web课程设计 网页规划与设计
✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (110套) 】 🌎超炫酷的Echarts大屏可视化源码:【🔰 echarts大屏展示大数据平台可视化(150套) 】 🎁 免费且实用的WEB前端学习指南: 【📂web前端零基础到高级学习视频教程 120G干货分享】 🥇 关于作者: 历任研发工程师,
IT司马青衫
2022/08/15
1.1K0
关于游戏介绍的HTML网页设计 HTML5期末考核大作业 HTML静态游戏网页作业 web前端开发技术 web课程设计 网页规划与设计
推荐阅读
相关推荐
关于Python可视化Dash工具-回调
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档