【Streamlit学习笔记】Streamlit-ECharts热力图tooltip提示信息拓展

news2024/11/18 7:39:07

Streamlit-ECharts

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

安装模块库

pip install streamlit
pip install streamlit-echarts

绘制热力图展示

在基础热力图上拓展了tooltip提示信息,如图所示,基础热力图绘制数据为[0, 0, 5],现需要将tooltip提示信息增加一个label,故源数据可能变为[0, 0, 5, ‘A’],此时在不改变热力图绘制的前提下,拓展提示信息

在这里插入图片描述

在这里插入图片描述

实现代码(详细注释)

程序结构如下图:

在这里插入图片描述

heatmap.py程序如下:

from streamlit_echarts import st_echarts
from streamlit_echarts import JsCode

def render_basic_heatmap(x_data, y_data, v_data):
    data = v_data
    # 从 v_data 中提取绘制热力图需要的数据,即每个数据点的x、y坐标和值
    heatmap_data = [[row[0], row[1], row[2]] for row in data]
    # 定义ECharts的配置选项(即ECharts的option)
    option = {
        # 设置图表的提示信息,当鼠标悬停在数据点上时显示
        "tooltip": {"position": "top", # 提示框位置在数据点上方
                    'trigger': 'item', # 提示触发方式为单个数据点
                    # 使用JsCode来编写自定义的提示格式化函数
                    'formatter': JsCode(
                        "function (param) {const originalData = %s.find(d => d[0] === param.data[0] && d[1] === param.data[1] && d[2] === param.data[2]);\
                                        const temp = originalData ? originalData[3] : 'N/A';\
                                        return ['x: '+param.data[0],'y: '+param.data[1], 'value: '+param.data[2], 'label: '+temp].join('<br/>')}" % data
                        ).js_code}, # 将字符串转换为JavaScript代码
        "grid": {"height": "50%", "top": "10%"}, # 设置网格,这里设置网格高度为50%,顶部留出10%
        # 数据缩放,设置为内缩,垂直方向
        "dataZoom": [{
		    "type": 'inside',
            "orient": 'vertical',
	    },{
            "type": 'inside',
        }],
        # x轴配置,类型为类别轴,启用分隔区域
        "xAxis": {"type": "category", "data": x_data, "splitArea": {"show": True}},
        # y轴配置,类型为类别轴,启用分隔区域
        "yAxis": {"type": "category", "data": y_data, "splitArea": {"show": True}},
        # 设置视觉映射,用于颜色映射
        "visualMap": {
            "min": 0,
            "max": 10,
            "calculable": True,
            "orient": "horizontal",
            "left": "center",
            "bottom": "10%"
        },
        "series": [ 
            {
                "name": "CIC Value",
                "type": "heatmap", # 图表类型为热力图
                "data": heatmap_data,
                "emphasis": { # 高亮样式
                    "itemStyle": {"shadowBlur": 10, "shadowColor": "rgba(0, 0, 0, 0.5)"}
                }
            }
        ],
    }
    st_echarts(option, height="500px") # 渲染图表

app.py程序如下:

import streamlit as st
from heatmap import render_basic_heatmap

data = [[0, 0, 5, 'A'], [0, 1, 1, 'B'], [0, 2, 0, 'C'], [0, 3, 0, 'D'], [0, 4, 0, 'E'], [0, 5, 0, 'F'], 
        [0, 6, 0, 'G'], [0, 7, 0, 'H'], [0, 8, 0, 'I'], [0, 9, 0, 'J'], [0, 10, 0, 'K'], [0, 11, 2, 'L'], 
        [0, 12, 4, 'M'], [0, 13, 1, 'N'], [0, 14, 1, 'O'], [0, 15, 3, 'P'], [0, 16, 4, 'Q'], [0, 17, 6, 'R'], 
        [0, 18, 4, 'S'], [0, 19, 4, 'T'], [0, 20, 3, 'U'], [0, 21, 3, 'V'], [0, 22, 2, 'W'], [0, 23, 5, 'X'], 
        [1, 0, 7, 'A'], [1, 1, 0, 'B'], [1, 2, 0, 'C'], [1, 3, 0, 'D'], [1, 4, 0, 'E'], [1, 5, 0, 'F'], 
        [1, 6, 0, 'G'], [1, 7, 0, 'H'], [1, 8, 0, 'I'], [1, 9, 0, 'J'], [1, 10, 5, 'K'], [1, 11, 2, 'L'], 
        [1, 12, 2, 'M'], [1, 13, 6, 'N'], [1, 14, 9, 'O'], [1, 15, 11, 'P'], [1, 16, 6, 'Q'], [1, 17, 7, 'R'], 
        [1, 18, 8, 'S'], [1, 19, 12, 'T'], [1, 20, 5, 'U'], [1, 21, 5, 'V'], [1, 22, 7, 'W'], [1, 23, 2, 'X'], 
        [2, 0, 1, 'A'], [2, 1, 1, 'B'], [2, 2, 0, 'C'], [2, 3, 0, 'D'], [2, 4, 0, 'E'], [2, 5, 0, 'F'], 
        [2, 6, 0, 'G'], [2, 7, 0, 'H'], [2, 8, 0, 'I'], [2, 9, 0, 'J'], [2, 10, 3, 'K'], [2, 11, 2, 'L'], 
        [2, 12, 1, 'M'], [2, 13, 9, 'N'], [2, 14, 8, 'O'], [2, 15, 10, 'P'], [2, 16, 6, 'Q'], [2, 17, 5, 'R'], 
        [2, 18, 5, 'S'], [2, 19, 5, 'T'], [2, 20, 7, 'U'], [2, 21, 4, 'V'], [2, 22, 2, 'W'], [2, 23, 4, 'X'],
        [3, 0, 7, 'A'], [3, 1, 3, 'B'], [3, 2, 0, 'C'], [3, 3, 0, 'D'], [3, 4, 0, 'E'], [3, 5, 0, 'F'], 
        [3, 6, 0, 'G'], [3, 7, 0, 'H'], [3, 8, 1, 'I'], [3, 9, 0, 'J'], [3, 10, 5, 'K'], [3, 11, 4, 'L'], 
        [3, 12, 7, 'M'], [3, 13, 14, 'N'], [3, 14, 13, 'O'], [3, 15, 12, 'P'], [3, 16, 9, 'Q'], [3, 17, 5, 'R'], 
        [3, 18, 5, 'S'], [3, 19, 10, 'T'], [3, 20, 6, 'U'], [3, 21, 4, 'V'], [3, 22, 4, 'W'], [3, 23, 1, 'X'], 
        [4, 0, 1, 'A'], [4, 1, 3, 'B'], [4, 2, 0, 'C'], [4, 3, 0, 'D'], [4, 4, 0, 'E'], [4, 5, 1, 'F'], 
        [4, 6, 0, 'G'], [4, 7, 0, 'H'], [4, 8, 0, 'I'], [4, 9, 2, 'J'], [4, 10, 4, 'K'], [4, 11, 4, 'L'], 
        [4, 12, 2, 'M'], [4, 13, 4, 'N'], [4, 14, 4, 'O'], [4, 15, 14, 'P'], [4, 16, 12, 'Q'], [4, 17, 1, 'R'], 
        [4, 18, 8, 'S'], [4, 19, 5, 'T'], [4, 20, 3, 'U'], [4, 21, 7, 'V'], [4, 22, 3, 'W'], [4, 23, 0, 'X'], 
        [5, 0, 2, 'A'], [5, 1, 1, 'B'], [5, 2, 0, 'C'], [5, 3, 3, 'D'], [5, 4, 0, 'E'], [5, 5, 0, 'F'], 
        [5, 6, 0, 'G'], [5, 7, 0, 'H'], [5, 8, 2, 'I'], [5, 9, 0, 'J'], [5, 10, 4, 'K'], [5, 11, 1, 'L'], 
        [5, 12, 5, 'M'], [5, 13, 10, 'N'], [5, 14, 5, 'O'], [5, 15, 7, 'P'], [5, 16, 11, 'Q'], [5, 17, 6, 'R'], 
        [5, 18, 0, 'S'], [5, 19, 5, 'T'], [5, 20, 3, 'U'], [5, 21, 4, 'V'], [5, 22, 2, 'W'], [5, 23, 0, 'X'], 
        [6, 0, 1, 'A'], [6, 1, 0, 'B'], [6, 2, 0, 'C'], [6, 3, 0, 'D'], [6, 4, 0, 'E'], [6, 5, 0, 'F'], 
        [6, 6, 0, 'G'], [6, 7, 0, 'H'], [6, 8, 0, 'I'], [6, 9, 0, 'J'], [6, 10, 1, 'K'], [6, 11, 0, 'L'], 
        [6, 12, 2, 'M'], [6, 13, 1, 'N'], [6, 14, 3, 'O'], [6, 15, 4, 'P'], [6, 16, 0, 'Q'], [6, 17, 0, 'R'], 
        [6, 18, 0, 'S'], [6, 19, 0, 'T'], [6, 20, 1, 'U'], [6, 21, 2, 'V'], [6, 22, 2, 'W'], [6, 23, 6, 'X']]
y = [0, 1, 2, 3, 4, 5, 6]
x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]
data = [[row[1], row[0], row[2], row[3]] for row in data]
render_basic_heatmap(x, y, data)

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【强化学习的数学原理】课程笔记--5(值函数近似,策略梯度方法)

目录 值函数近似一个例子TD 算法的值函数近似形式Sarsa, Q-learning 的值函数近似形式Deep Q-learningexperience replay 策略梯度方法&#xff08;Policy Gradient&#xff09;Policy Gradient 的目标函数目标函数 1目标函数 2两种目标函数的同一性 Policy Gradient 目标函数的…

18967 六一儿童节

这个问题可以使用贪心算法来解决。我们可以先将孩子们的需求和巧&#xfffd;&#xfffd;&#xfffd;力的重量都进行排序&#xff0c;然后从最大的需求开始&#xff0c;找到能满足这个需求的最大的巧克力&#xff0c;将其分给这个孩子。然后继续处理下一个需求&#xff0c;直…

基于微信小程序+SpringBoot+Vue的自助点餐系统(带1w+文档)

基于微信小程序SpringBootVue的自助点餐系统(带1w文档) 基于微信小程序SpringBootVue的自助点餐系统(带1w文档) 基于微信小程序的自助点餐系统前后台分离&#xff0c;让商品订单&#xff0c;用户反馈信息&#xff0c;商品信息等相关信息集中在后台让管理员管理&#xff0c;让用…

【进程间通信机制】管道和 FIFO、信号、消息队列、信号量、共享内存、套接字(Socket)

进程详细剖析&#xff0c;移步&#xff1a;https://blog.csdn.net/Thmos_vader/article/details/140750535 进程间通信 前文介绍&#xff1a;如何通过 fork()或 vfork()创建子进程&#xff0c;以及在子进程中通过 exec()函数执行一个新的程序&#xff1b; 谓进程间通信指的是…

考题相似度 AI 分析 API 数据接口

考题相似度 AI 分析 API 数据接口 基于 AI 的相似度评估&#xff0c;专有 AI 模型&#xff0c;包含评估详情 。 1. 产品功能 基于自有专业模型进行 AI 智能分析&#xff1b;提供详细的相似度评分和结果描述&#xff1b;高效的模型分析性能&#xff1b;全接口支持 HTTPS&#…

乐鑫ESP32-H2设备联网芯片,集成多种安全功能方案,启明云端乐鑫代理商

在数字化浪潮的推动下&#xff0c;物联网正以前所未有的速度融入我们的日常生活。然而&#xff0c;随着设备的激增&#xff0c;安全问题也日益成为公众关注的焦点。 乐鑫ESP32-H2致力于为所有开发者提供高性价比的安全解决方案&#xff0c;这款芯片经过专门设计以集成多种安全…

【时时三省】unity test 测试框架 下载

目录 1&#xff0c;unity test 测试框架介绍 2&#xff0c;源码下载 3&#xff0c;目录架构 4&#xff0c;git for window 下载安装方法&#xff1a; 1&#xff0c;unity test 测试框架介绍 Unity是一个用于C语言的轻量级单元测试框架。它由Throw The Switch团队开发&#…

工作很难受,还要不要继续留在职场上?

先说结论&#xff1a;我非常赞同大家离开职场 虽然小编现实的工作是有关于人力资源的&#xff0c;高级点叫做猎头&#xff0c;低俗点讲就叫“人贩子” 原因可能和其他人不太一样&#xff0c;大家自行理解 1.现在的社会资源太少&#xff0c;“蛋糕”太小 大家要明白最重要的…

TVL 破 3 亿美元的 Pencils Protocol,缘何具备持续盈利的能力?

Pencils Protocol 是行业内首个 DeFi Auction 的一站式聚合收益平台&#xff0c;其不仅支持 LaucnhPad、Staking、杠杆挖矿等系列功能&#xff0c;并有望成为 Scroll 生态重要的流动性枢纽&#xff0c;其目前正在基于该体系为 LRT 赛道赋能&#xff0c;目前在质押端不仅支持 ST…

【公式】因果卷积神经网络公式与应用解析

因果卷积神经网络公式与应用解析 因果卷积神经网络的核心作用 因果卷积神经网络&#xff08;Temporal Convolutional Network, TCN&#xff09;是一种专为时间序列预测而设计的网络结构。它通过因果卷积层&#xff0c;能够有效地处理时间序列数据&#xff0c;捕捉时间序列中的…

mediasoup simulcast实现说明

一. 前言 二. 空间可伸缩与时间可伸缩 三. mediasoup simulcast实现代码分析 1. 推流客户端开启 simulcast 2. mediasoup服务端接收simulcast流 3. mediasoup服务端转发流数据给消费者 a. SimulcastConsumer类声明 b. 获取预估码率&#xff0c;切换SimulcastConsumer的目…

大脑自组织神经网络通俗讲解

大脑自组织神经网络的核心概念 大脑自组织神经网络&#xff0c;是指大脑中的神经元通过自组织的方式形成复杂的网络结构&#xff0c;从而实现信息的处理和存储。这一过程涉及到神经元的生长、连接和重塑&#xff0c;是大脑学习和记忆的基础。其核心公式涉及神经网络的权重更新…

优化算法:2.粒子群算法(PSO)及Python实现

一、定义 粒子群算法&#xff08;Particle Swarm Optimization&#xff0c;PSO&#xff09;是一种模拟鸟群觅食行为的优化算法。想象一群鸟在寻找食物&#xff0c;每只鸟都在尝试找到食物最多的位置。它们通过互相交流信息&#xff0c;逐渐向食物最多的地方聚集。PSO就是基于这…

探索HTTPx:Python中的HTTP客户端新选择

文章目录 探索HTTPx&#xff1a;Python中的HTTP客户端新选择背景什么是HTTPx&#xff1f;安装HTTPx简单的库函数使用方法发送GET请求发送POST请求设置超时使用代理处理Cookies 应用场景异步请求连接池管理重试机制 常见问题与解决方案问题1&#xff1a;超时错误问题2&#xff1…

ROS getting started

文章目录 前言一、认识ROS提供的命令行工具nodestopicsservicesparametersactionsrqt_console, rqt_graph批量启动多个节点recorde and playc基础pub-sub 1.5 ROS2和fastdds1 改变订阅模式2 xml配置3 指定xml位置4 talker/listener通过发现服务器发送topic5 ros2 检视6 远程fas…

Natutre Methods|单细胞+空间转录,值得去复现的开源单细胞分析pipeline

肺癌是全球第二大最常见的癌症&#xff0c;也是癌症相关死亡的主要原因。肿瘤生态系统具有多种免疫细胞类型。尤其是髓系细胞&#xff0c;髓系细胞普遍存在&#xff0c;并且在促进疾病方面发挥着众所周知的作用。该篇通过单细胞和空间转录组学分析了 25 名未经治疗的腺癌和鳞状…

58页PPT智慧工地整体解决方案(精华版)

智慧工地的核心技术主要包括以下几个方面&#xff1a; 本文篇幅限制&#xff0c;只分享部分内容&#xff0c;喜欢文章请点赞转发评论&#xff0c;下载完整版PPT可以查看文章中图片右下角信息 1. 物联网&#xff08;IoT&#xff09;技术 核心作用&#xff1a;物联网技术是智慧…

贪心+背包

这道题比较坑的就是我们的对于相同截止时间的需要排个序&#xff0c;因为我们这个工作是有时间前后顺序的&#xff0c;我们如果不排序的话我们一些截止时间晚的工作就无法得到最优报酬 #include<bits/stdc.h> using namespace std;#define int long long int t; int n; c…

数据结构:二叉树(堆)的顺序存储

文章目录 1. 树1.1 树的概念和结构1.2 树的相关术语 2. 二叉树2.1 二叉树的概念和结构2.2 二叉树的特点2.3 特殊的二叉树2.3.1 满二叉树2.3.2 完全二叉树 2.4 二叉树的性质 3. 实现顺序结构二叉树3.1 堆的概念和结构3.2 初始化3.3 销毁3.4 插入数据3.5 向上调整算法3.6 删除数据…