【Streamlit学习笔记】Streamlit-ECharts箱型图添加均值和最值label

Streamlit-ECharts

Streamlit-ECharts是一个Streamlit组件,用于在Python应用程序中展示ECharts图表。ECharts是一个由百度开发的JavaScript数据可视化库Apache ECharts

安装模块库

pip install streamlit
pip install streamlit-echarts

绘制箱型图展示

在基础箱型图上添加了均值(黄色菱形)和每个box的最大值和最小值,如图所示:

在这里插入图片描述

实现代码(详细注释)

程序结构如下图:

在这里插入图片描述
boxplot.py程序如下:

from streamlit_echarts import st_echarts
from streamlit_echarts import JsCode


def render_basic_boxplot(text_name,xlable_name,ylable_name,dataset_list,y_min,y_max):
    mean_data = [sum(i) / len(i) for i in dataset_list] # 计算每个boxplot的均值
    max_data = [int(max(sublist)) for sublist in dataset_list] # 计算每个boxplot的最大值
    min_data = [int(min(sublist)) for sublist in dataset_list] # 计算每个boxplot的最小值
    option = {
        "title": [
            {"text": text_name, "left": "center"} # 标题,居中
        ],
        "dataset": [
            {
                "source": dataset_list # 数据集,每个boxplot的数值
            },
            {
                "transform": { # 对数据集进行转换,得到boxplot的上下四分位数
                    "type": "boxplot", # 转换类型为boxplot
                    "config": {
                        "itemNameFormatter": "#{value}" # 数值标签格式化
                        },
                }
            },
            {"fromDatasetIndex": 1, "fromTransformResult": 1}, # 取出转换后的boxplot数据
        ],
        "tooltip": {"trigger": "item", # 提示框触发方式为item
                    "axisPointer": {"type": "shadow"}, # 坐标轴指示器类型为阴影
                    "formatter": JsCode(
                        "function (param) {return ['芯片: '+param.data[0],'upper: ' + param.data[5],'Q3: ' + param.data[4],'median: ' + param.data[3],'Q1: ' + param.data[2],'lower: ' + param.data[1]].join('<br/>')}"
                        ).js_code # 自定义提示框内容格式化函数
                    },
        "grid": {"left": "10%", "right": "10%", "bottom": "15%"}, # 网格设置
        "dataZoom": [{
		    "type": 'inside', # 内置缩放组件
            "orient": 'vertical', # 垂直方向缩放
	    },{
            "type": 'inside', # 内置缩放组件
            "orient": 'horizontal', # 水平方向缩放
        }],
        "xAxis": {
            "type": "category", # 类目轴类型
            "name": xlable_name, # x轴名称
            "boundaryGap": True, # 类目轴两边留白策略
            "nameGap": 10, # 类目轴名称与轴线之间的距离
            "splitArea": {"show": False}, # 去除分割区域
            "splitLine": {"show": False}, # 去除分割线
        },
        "yAxis": {
            "type": "value", # 数值轴类型
            "name": ylable_name, # y轴名称
            "splitArea": {"show": True}, # 显示分割区域
            "min":y_min, # y轴最小值
            "max": y_max # y轴最大值
        },
        "series": [
            {"name": "boxplot",  # 系列名称
             "type": "boxplot",  # 图表类型为boxplot
             "datasetIndex": 1   # 对应数据集索引
            },
            {"name": "outlier",  # 系列名称
             "type": "scatter",  # 图表类型为散点图
             "datasetIndex": 2   # 对应数据集索引
             },
            {"name":"mean", # 系列名称
             "type":"scatter", # 图表类型为散点图
             "symbol":"diamond", # 标记形状为菱形
             "data":mean_data # 散点图数据为boxplot的均值
             },
            {"name":"max", # 系列名称
             "type":"scatter", # 图表类型为散点图
             "symbolSize":0, # 标记大小为0
             "data":max_data, # 散点图数据为boxplot的最大值
             "label":
             {"show":True, # 显示标签
              "position":"top" # 标签位置为上方
              }
            },
            {"name":"min", # 系列名称
             "type":"scatter", # 图表类型为散点图
             "symbolSize":0, # 标记大小为0
             "data":min_data, # 散点图数据为boxplot的最小值
             "label": 
             {"show":True, # 显示标签
              "position":"bottom" # 标签位置为下方
              }
            }
        ]
    }
    st_echarts(option, height="500px") # 渲染图表

app.py程序如下:

import streamlit as st
from boxplot import render_basic_boxplot


text_name = "Basic Boxplot"
xlable_name = "X-axis"
ylable_name = "Y-axis"
dataset_list =  [
                    [
                        850,
                        740,
                        900,
                        1070,
                        930,
                        850,
                        950,
                        980,
                        980,
                        880,
                        1000,
                        980,
                        930,
                        650,
                        760,
                        810,
                        1000,
                        1000,
                        960,
                        960,
                    ],
                    [
                        960,
                        940,
                        960,
                        940,
                        880,
                        800,
                        850,
                        880,
                        900,
                        840,
                        830,
                        790,
                        810,
                        880,
                        880,
                        830,
                        800,
                        790,
                        760,
                        800,
                    ],
                    [
                        880,
                        880,
                        880,
                        860,
                        720,
                        720,
                        620,
                        860,
                        970,
                        950,
                        880,
                        910,
                        850,
                        870,
                        840,
                        840,
                        850,
                        840,
                        840,
                        840,
                    ],
                    [
                        890,
                        810,
                        810,
                        820,
                        800,
                        770,
                        760,
                        740,
                        750,
                        760,
                        910,
                        920,
                        890,
                        860,
                        880,
                        720,
                        840,
                        850,
                        850,
                        780,
                    ],
                    [
                        890,
                        840,
                        780,
                        810,
                        760,
                        810,
                        790,
                        810,
                        820,
                        850,
                        870,
                        870,
                        810,
                        740,
                        810,
                        940,
                        950,
                        800,
                        810,
                        870,
                    ],
                ]
y_min = 500
y_max = 1200
render_basic_boxplot(text_name,xlable_name,ylable_name,dataset_list,y_min,y_max)

希望本文对大家有帮助,上文若有不妥之处,欢迎指正

分享决定高度,学习拉开差距

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/746728.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入探讨C++的高级反射机制(2):写个能用的反射库

在现代软件开发中&#xff0c;反射是一种强大的特性&#xff0c;它可以支持程序在运行时查询和调用对象的属性和方法。 但是在C中&#xff0c;没有内置的反射机制。我们可以通过一些巧妙的技术模拟反射的部分功能。 上一篇文章写了个简单的反射功能&#xff0c;这回完善一下&a…

最新版Git安装指南使用指南

首先&#xff0c;访问Git的官方网站https://git-scm.com下载适用于您操作系统的安装包。您也可以选择使用阿里云镜像来加速下载过程。 也可以用国内地址下载https://pan.quark.cn/s/0293d76e58bchttps://pan.quark.cn/s/0293d76e58bc安装过程 在这里插入图片描述 2、点击“…

前端 CSS 经典:backface-visibility 属性

前言&#xff1a;backface-visibility 属性可以使反转 180deg 的元素隐藏&#xff0c;使用这个属性实现卡片翻转效果 效果 代码实现 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" /><meta http-equiv"X-…

重庆交通大学24计算机考研数据速览,专硕第二年招生,复试线321分!

重庆交通大学&#xff08;Chongqing Jiaotong University&#xff0c;CQJTU&#xff09;&#xff0c;是由重庆市人民政府和中华人民共和国交通运输部共建的一所交通特色、以工为主的多科性大学&#xff0c;入选“中西部高校基础能力建设工程”、“卓越工程师教育培养计划”、国…

用jsp实现删除数据库表中的一行

话不多说&#xff0c;直接上图 一.思路 运用<a>标签将数据送到目标页面&#xff0c;实现对一行的删除。 语法&#xff1a; 1:form表单提交到的目标页面 2&#xff1a;输入主码的input的id 3:获取主码的值 <a href"1&#xff1f;2<%3%>">删除</a…

七天速通javaSE:第四天 递归算法

文章目录 前言一、递归的介绍二、递归模型&#xff08;n!&#xff09;1 阶乘的定义&#xff1a;2. 阶乘的递归代码实现3. 递推与回归的内部逻辑三、练习 前言 本文将学习递归算法。在计算机科学中&#xff0c;递归算法是一种将问题不断分解 为同一类子问题来解决问题的方法。递…

网站推广如何做?这七个方法要知道

在出海独立站商家中&#xff0c;推广是必不可少的环节。在你完成网站的搭建&#xff0c;产品的上架&#xff0c;以及网站的运营和优化后&#xff0c;你就可以开始着手推广你的网站了。你的网站是承载你的品牌和产品的主要平台&#xff0c;因此&#xff0c;你需要根据你的品牌和…

Windows Nginx更新版本

一、准备新版安装包 nginx: downloadhttps://nginx.org/en/download.html 二、升级Nginx 1、备份原Nginx 2、上传新版Nginx 上传并解压 3、更新版本 1&#xff09;原文件夹更新 1.关闭nginx 查看原版本号 nginx -v 命今关闭 nginx -s stop 确认进程里没有nginx&#…

ZGC垃圾收集的主要流程

值得说明的是&#xff0c;在执行就地迁移时&#xff0c;ZGC 必须首先压缩指定为对象迁移区域内的对象&#xff0c;这可能会对性能产生负面影响。增加堆大小可以帮助 ZGC 避免使用就地迁移。 如上图&#xff0c;ZGC 的工作流程主要包括以下几个步骤&#xff1a; &#xff08;STW…

DVWA 靶场 SQL Injection 通关解析

前言 DVWA代表Damn Vulnerable Web Application&#xff0c;是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序&#xff0c;旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。 DVWA提供了一系列的漏洞场…

Python+Vue+Springboot实现电脑端微信好友导入导出

主要实现思路是使用python的自动化库uiautomation进行客户端抓取联系人&#xff0c;vue做管理界面&#xff0c;springboot做后端服务。 截图如下 登录&#xff1a; 首页 好友导出 不足之处就是只有windows版本&#xff0c;mac上还不行 而且谷歌和edge浏览器的效果是最好的&a…

面试-Java线程池

1.利用Excutors创建不同的线程池满足不同场景的需求 分析&#xff1a; 如果并发的请求的数量非常多&#xff0c;但每个线程执行的时间非常短&#xff0c;这样就会频繁的创建和销毁线程。如此一来&#xff0c;会大大降低系统的效率。 可能出现&#xff0c;服务器在为每个线程创建…

LAMP架构的源码编译环境下部署Discuz论坛

一、LAMP架构 LAMP架构是一种常见的用于构建动态网站的技术栈 组成功能Linux&#xff08;操作系统&#xff09;LAMP 架构的基础&#xff0c;用于托管 Web 服务器和应用程序Apache&#xff08;Web服务器&#xff09;接收和处理客户端请求&#xff0c;并将静态和动态内容发送给…

20240626让飞凌的OK3588-C开发板在相机使用1080p60分辨率下预览

20240626让飞凌的OK3588-C开发板在相机使用1080p60分辨率下预览 2024/6/26 15:15 4.2.1 全编译测试 在源码路径内&#xff0c;提供了编译脚本 build.sh&#xff0c;运行该脚本对整个源码进行编译&#xff0c;需要在终端切换到解压 出来的源码路径&#xff0c;找到 build.sh 文件…

设备智能化:中国星坤线缆组件的解决方案!

在当今快速发展的电子行业中&#xff0c;产品小型化和成本效益是制造商追求的两大目标。中国星坤端子电缆组件以其灵活性和高效性&#xff0c;为电子设备制造商提供了一种理想的解决方案。本文将探讨星坤端子电缆组件的优势以及其在不同电子设备中的应用。 端子线&#xff1a;小…

Spring AI 实现调用openAi 多模态大模型

什么是多模态? 多模态(Multimodal)指的是数据或信息的多种表现形式。在人工智能领域,我们经常会听到这个词,尤其是在近期大型模型(如GPT-4)开始支持多模态之后。 模态:模态是指数据的一种形式,例如文本、图像、音频等。每一种形式都是一种模态。多模态:多模态就是将…

uniapp地图点击获取位置

主页面 <view class"right-content" click.stop"kilometer(item)"><view class"km">{{item.distance||0}}km</view><image src"../../static/map.png" mode""style"width: 32rpx; height: 32rpx…

Linux-笔记 OverlayFS文件系统入门

目录 前言 主要概念 工作原理 特点特性 1、上下合并 2、同名文件覆盖 3、同名目录合并 4、写时拷贝 实操入门 内核配置 挂载文件系统 验证 1、同名文件覆盖 2、同名目录合并 3、写时拷贝 1&#xff09;验证新增文件或目录 2&#xff09;验证修改文件 3&…

2024最新谷歌镜像网站入口分享

google谷歌搜索引擎最新可用镜像站列表&#xff1a;&#xff08;注意不要登录账号&#xff0c;镜像站并非谷歌官方网站&#xff09; 谷歌镜像网站1&#xff1a;https://google.cloudnative.love/ 谷歌镜像网站2&#xff1a;https://gsearch.g.shellten.top/ 谷歌镜像网站3&…