桑基图绘制

news2024/9/26 5:23:16

绘制桑基图

但是关于数据流上的数据标签可能还得用ps…

注意

1、节点(nodes)要包括各层的,且不能重复,需要自己在后边append几个数据
2、数据流的数据要是整数,不能时numpy
3、注意表格加入时要再由array转为list(说白了还是基础不扎实,导致花很多时间调整)

资料参考

♥※第三方可视化数据分析图表Pyecharts(下载保存图片(生成的html图片)、zip函数(将数据转换为列表加元组的格式)、南丁格尔玫瑰图、双y轴可视化、饼形图和环形图):关于pyechart的设置恨恨恨详细!!!

  1. jupyter lab下用pyecharts生成桑基图显示空白
  2. pyechart数据可视化丨制作桑基图(sankey)的最简单方法
    python数据可视化Pyecharts库sankey修改桑葚图颜色
    python绘制桑基图(sankey diagram)

数据

在这里插入图片描述

代码

import os
from pyecharts import options as opts
from pyecharts.charts import Sankey
import pandas as pd
import numpy as np
import json
#事先把数据存好了格式为  研究期初、研究期末、数据
data1 = pd.read_excel(r'E:\...移矩阵 - 副本.xlsx',encoding = "gbk", index_col = "研究期初")
data2 = pd.DataFrame()
data2["研究期初"] = data1.index
data2["研究期末"] = list(data1["研究期末"].values)
data2["面积"] = data1["面积"].values


# 生成nodes
nodes2 = []
# 先导入部分节点
for i in data2["研究期初"].unique():    
    dic = {}    
    dic['name'] = i    
    nodes2.append(dic)
nodes2.append({'name':'2021年水体'})
nodes2.append({'name':'2021年沙洲'})
nodes2.append({'name':'2021年边滩'})
links2 = []
# 组成字典
for i in data2.values:    
    dic = {}    
    dic['source'] = i[0]    
    dic['target'] = i[1]    
    dic['value'] = int(i[2])
    links2.append(dic)   
#绘制图片
c = (
    Sankey(init_opts=opts.InitOpts(width="1200px", height="800px",theme='westeros'))
    .add(
        "",
        nodes=nodes2,  # 结点
        links=links2,  # 联系
        linestyle_opt=opts.LineStyleOpts(opacity=0.2, curve=0.5, color="source"),
        label_opts=opts.LabelOpts(position="right"),
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="闽清闽侯段"))
    .render(r"E:\b-研究生学习\5-课题组\1-2022 闽江\3-数据资料\data_area\ABC.html")
)

结果

在这里插入图片描述

设置图片颜色和字体大小

图片颜色

for i in data2["研究期初"].unique():    
    dic = {}    
    dic['name'] = i    
    if i.split("年")[1] == "水体":
        dic['itemStyle']={'color':"#00BFFF"}
    elif i.split("年")[1] == "沙洲":
        dic['itemStyle']={'color':"#FFA500"}    
    else:
        dic['itemStyle']={'color':"#FFFF00"}
    nodes2.append(dic)
nodes2.append({'name':'2021年水体','itemStyle':{'color':"#00BFFF"}})
nodes2.append({'name':'2021年沙洲','itemStyle':{'color':"#FFA500"}})
nodes2.append({'name':'2021年边滩','itemStyle':{'color':"#FFFF00"}})

字体大小

   label_opts=opts.LabelOpts(position="right",font_size=(20)),)

添加工具箱,用来下载图片

pic = (
    Sankey(init_opts=opts.InitOpts(width='700px',height='400px',  # 设置画布大小                        
                                bg_color='#fff'))  #设置画布底色,保证打印下来图片正常
    .add("",
          nodes2,
          links2,
          linestyle_opt=opts.LineStyleOpts(opacity=0.2, curve=0.5, color="source",type_="dotted"),
          node_gap=50,
          label_opts=opts.LabelOpts(position="right",font_size=(17)),)
    #.set_global_opts(title_opts=opts.TitleOpts("闽清闽侯段"))
   
    )

结果2

请添加图片描述
请添加图片描述
最后代码:

# -*- coding: utf-8 -*-
"""
Created on Thu Mar  2 10:30:34 2023
1、绘制桑基图
2、保存出图
@author: hp
"""
import os
from pyecharts import options as opts
from pyecharts.charts import Sankey
import pandas as pd
import numpy as np
import json

data1 = pd.read_excel(r'E:\b-研究生学习\5-课题组\1-2022 闽江\3-数据资料\data_area\闽清闽侯段转移矩阵 - 副本.xlsx',encoding = "gbk", index_col = "研究期初")
data2 = pd.DataFrame()
data2["研究期初"] = data1.index
data2["研究期末"] = list(data1["研究期末"].values)
data2["面积"] = data1["面积"].values
# 生成nodes
nodes2 = []
# 添加其他节点
for i in data2["研究期初"].unique():    
    dic = {}    
    dic['name'] = i    
    if i.split("年")[1] == "水体":
        dic['itemStyle']={'color':"#00BFFF"}
    elif i.split("年")[1] == "沙洲":
        dic['itemStyle']={'color':"#FFA500"}    
    else:
        dic['itemStyle']={'color':"#FFFF00"}
    nodes2.append(dic)
nodes2.append({'name':'2021年水体','itemStyle':{'color':"#00BFFF"}})
nodes2.append({'name':'2021年沙洲','itemStyle':{'color':"#FFA500"}})
nodes2.append({'name':'2021年边滩','itemStyle':{'color':"#FFFF00"}})
links2 = []
for i in data2.values:    
    dic = {}    
    dic['source'] = i[0]    
    dic['target'] = i[1]    
    dic['value'] = int(i[2])
    links2.append(dic)   

# c = (
#     Sankey(init_opts=opts.InitOpts(width="1200px", height="800px",theme='westeros'))
#     .add(
#         "",
#         nodes=nodes2,  # 结点
#         links=links2,  # 联系
#         linestyle_opt=opts.LineStyleOpts(opacity=0.2, curve=0.5, color="source"),
#         label_opts=opts.LabelOpts(position="right"),
#     )
#     .set_global_opts(title_opts=opts.TitleOpts(title="闽清闽侯段"))
#     .render(r"E:\b-研究生学习\5-课题组\1-2022 闽江\3-数据资料\data_area\ABC.html")
# )
pic = (
    Sankey(init_opts=opts.InitOpts(width='700px',height='400px',  # 设置画布大小                        
                                bg_color='#fff'))  #设置画布底色,保证打印下来图片正常
    .add("",
          nodes2,
          links2,
          linestyle_opt=opts.LineStyleOpts(opacity=0.2, curve=0.5, color="source",type_="dotted"),
          node_gap=50,
          label_opts=opts.LabelOpts(position="right",font_size=(17)),)
    #.set_global_opts(title_opts=opts.TitleOpts("闽清闽侯段"))
   
    )
pic.set_global_opts(toolbox_opts=opts.ToolboxOpts(is_show=True,pos_left=500))   # 工具箱离容器左侧的距离   
pic.render('problem.html')
os.system('problem.html')

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

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

相关文章

大数据技术之Maxwell入门案例学习

大数据技术之Maxwell入门案例学习 文章目录大数据技术之Maxwell入门案例学习1、写在前面2. Maxwell 使用2.1 Maxwell 安装部署2.2 Maxwell 入门案例2.2.1 监控 Mysql 数据并在控制台打印2.2.2 监控 Mysql 数据输出到 kafka2.2.3 监控 Mysql 指定表数据输出控制台2.2.4 监控 Mys…

分布式监控系统——Zabbix(4)可视化、模板和用户参数

文章目录分布式监控系统——Zabbix(4)可视化、模板和用户参数一、zabbix可视化1.简介2.自定义图形(Graphs)3.聚合图形(Screens)4.幻灯片演示(Slide shows)5.定义拓扑图(M…

企业电销如何获得高质量精准流量,大数据获客直击精准客流

随时社会的发展,时代的进步,各行各业都在崛起,竞争力愈演愈烈,那么为了使自己的品牌得到更多人的关注,自己的产品可以更好的销售,无数的老板在想各种缤纷的办法让自己赚钱,百度竞价,…

图像处理│一张自拍即可实现变老变年轻,带你感受时光流逝之美

✨ 目录🎈 项目效果🎈 环境搭建🎈 下载PaddleGAN🎈 安装飞浆🎈 生成图片潜码🎈 老龄化处理🎈 年轻化处理🎈 项目效果 飞浆是一个由百度推出的深度学习开发平台,为开发者…

Ep_MySQL基础-存储引擎

show engines; //查看mysql所支持的存储引擎,以及从中得到mysql默认的存储引擎 MyIsam存储引擎:(非聚集索引)->数据索引不在一起 Innodb存储引擎:(聚集索引)->数据索引在一起 MyISAM 每个MyISAM数据表,皆由存储在硬盘上的3个文件所组成, .f…

光学设计软件Ansys的Lumerical 2023版本下载与安装使用

文章目录前言一、许可管理工具安装二、许可管理器配置三、Lumerical安装四、工具使用配置总结前言 Lumerical是一款功能强大的软件,用于设计和分析从组件到系统阶段的光子学和电磁学。这个版本的Lumerical改进了电子和光子学设计工具,用于复杂光子学&am…

【JAVA程序设计】【C00108】基于Springboot+Vue前后端分离的民宿短租预约管理系统

基于SpringbootVue前后端分离的民宿短租预约管理系统项目简介项目获取开发环境项目技术运行截图项目简介 基于Springbootvue开发的民宿短租预订管理系统,共分为三种权限:系统管理员、商家、用户 管理员角色包含以下功能: 个人中心、修改密码…

C++——优先级队列(priority_queue)的使用及实现

目录 一.priority_queue的使用 1.1、基本介绍 1.2、优先级队列的定义 1.3、基本操作(常见接口的使用) 1.4、重写仿函数支持自定义数据类型 二.priority_queue的模拟实现 2.1、构造&&重要的调整算法 2.2、常见接口的实现 push() pop() top() empt…

2023爬虫学习笔记 -- 多线程操作

一、定义一个程序开始时间程序开始时间time.time()二、创建几个网址,模拟目标网站网址列表[http://www.baidu.com,http://www.sogou.com,http://www.163.com]三、创建一个函数访问网站,模拟爬取数据操作(耗时操作)头{ "User-…

【C++】讲的最通透最易懂的关于结构体内存对齐的问题

目录1. 内存对齐规则2. 简单易懂的内存对齐示例2.1 简单结构体2.2 含位域的结构体2.3 空类的大小2.4 嵌套结构体3. 为什么需要内存对齐?4. 类型在不同系统下所占字节数1. 内存对齐规则 第一个成员在与结构体变量偏移量为0的位置处。其他成员变量要对齐到某个数字&a…

学了很久python却什么都做不了?这个方法一定要试试

很多人学了两三个月的python却什么都做不了,但有的人只学了不到一个月的时间,就可以开始自己做项目或者接私活,这是为什么? 作为20年码龄的老程序员,龙叔我觉得除了内在原因外,学习资源占据着大头。拥有好的…

NOC2021年测试卷2

一、单选题(共25题,每题2分,共50分) 1. 执行下面程序,屏幕上最多会看到多少个苹果?( ) A、10个B、11个C、1个D、无法确定2. 关于下面程序,说法正确的是 ?( ) 3. “角色1”要在“角色2”说完话后才能开始动作,如果“角色2”思考2秒钟,然后说3秒钟,那么“角…

【干货】又是一年跳槽季!Nginx 10道核心面试题及解析

Nginx是一款轻量级的高性能Web服务器和反向代理服务器,由俄罗斯的Igor Sysoev开发。它具有占用资源少、高并发、稳定性高等优点,被广泛应用于互联网领域。在Nginx的面试过程中,面试官通常会提出一些核心问题,本文将介绍一些常见的…

【手把手教会数据类型的存储】

数据类型介绍整型在内存中的存储:原码、反码、补码大小端字节序介绍及判断浮点型在内存中的存储解析1.数据类型介绍我们已经学习过了基本的数据类型:整型:shor —— 短整型int —— 整型long —— 长整型long long —— 更长的整型浮点型&…

机器学习 | 线性回归(单变量)

前文回顾:机器学习概述📚线性回归概念我们要使用一个数据集,数据集包含俄勒冈州波特兰市的住房价格。在这里,我要根据不同房屋尺寸所售出的价格,画出我的数据集。比方说,如果你朋友的房子是 1250 平方尺大小…

数据仓库之建模理论以及仓库设计思想

1、数据仓库 1.1、数据仓库概述 数据仓库是一个为数据分析而设计的企业级数据管理系统。数据仓库可集中、整合多个信息源的大量数据,借助数据仓库的分析能力,企业可从数据中获得宝贵的信息进而改进决策。同时,随着时间的推移,数…

【计算机组成原理】1、浮点数的二进制表示、科学计数法、IEEE754标准

文章目录什么是浮点数浮点数表示数字浮点数的二进制表示浮点数的「IEEE754标准」二进制表示背景特殊约定示例浮点数为什么有精度损失浮点数的范围和精度有多大参考资料用定点数表示数字时,会约定小数点的位置固定不变,整数部分和小数部分分别转换为二进制…

中原银行使用 XSKY星辰天合对象一体机解决核心系统备份管理问题

中原银行使用星辰天合 X3000 对象存储一体机在生产中心和灾备中心分别搭建分布式存储集群,通过 S3 协议与 NBU 备份平台对接,提供海量存储服务,实现备份平台架构转型。 近年来,金融机构随着业务规模及数据量的持续增长&#xff0c…

JavaSE19-常见类

文章目录一、Object1.概述2.常用方法二、String1.概述2.对象创建2.1 直接使用字面值2.2 使用构造方法3.常用方法三、包装类1.概述2.创建对象2.1 直接使用字面值2.2 使用构造方法2.3 使用静态方法valueOf3.常用方法4.自动装箱与自动拆箱4.1 自动装箱4.2 自动拆箱4.3 原理四、Str…

各类特殊开关电源问题解决方案

一、提高DCDC芯片电流 使用大功率三极管代替芯片内部开关管提高过流能力 二、BUCK电路实现负电压 将buck的地作为-Vout输出,原输出接地。 注:不要用LM2596跟LM2576 三、FLY-BUCK电路 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20808c03b126…