数据可视化高级技术Echarts(桑基图&入门)

目录

一、什么是桑基图

二、基本特征

三、设计注意事项

四、使用Echarts进行初级绘制

1.首先不能忘记五个基本步骤

 2.绘制的时需要将图像类型series.type设定为sankey类型。


一、什么是桑基图

        桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,概述图中延伸的分支的宽度对应数据流量的大小,通常应用于能源、材料成分、金融等数据的可视化分析。因1898年Matthew Henry Phineas Riall Sankey绘制的“蒸汽机的能源效率图”而闻名,此后便以其名字命名为“桑基图”。

二、基本特征

        桑基图最明显的特征就是,始末端的分支宽度总和相等,即所有主支宽度的总和应与所有分出去的分支宽度的总和相等,保持能量的平衡。

  1. 节点:桑基图由一系列节点组成,每个节点代表一个特定的实体或类别。例如,节点可以代表不同的产品、部门、地区等。

  2. 箭头:箭头表示流动的路径,从一个节点流向另一个节点。箭头的宽度通常表示流量或数量的大小。

  3. 流量量级:桑基图可以显示不同节点之间的流量量级,通过箭头的宽度来表示。宽度越大,表示流量或数量越大。

  4. 路径:桑基图可以显示多个节点之间的复杂路径,通过连接不同的节点和箭头来表示。

  5. 颜色编码:桑基图可以使用颜色来编码不同的节点或流动路径,以帮助用户更好地理解和区分不同的实体或类别。

三、设计注意事项

  1. 数据准备:确保数据准备充分,包括节点和流量的数据。节点应该清晰明确,流量数据应该准确可靠。

  2. 简洁明了:桑基图应该保持简洁明了,避免过多的节点和复杂的路径。过多的节点和路径可能会导致图表混乱不清晰,难以理解。

  3. 良好的布局:选择合适的布局方式,使得节点和箭头的排列有一定的逻辑性。可以按照流动的方向或重要性进行布局。

  4. 色彩选择:选择合适的色彩来区分不同的节点和流动路径。颜色应该鲜明对比,以便用户能够清晰地区分不同的实体或类别。

  5. 箭头宽度控制:根据流量的大小,合理调整箭头的宽度。宽度应该能够直观地反映流量的差异,但也不能过于夸张。

  6. 标签和注释:为节点和箭头添加标签和注释,以便用户能够理解图表的含义。标签应该简洁明了,能够清晰地描述节点和流动的含义。

  7. 交互性:考虑为桑基图添加交互性,例如鼠标悬停显示详细信息、点击节点展开子节点等。交互性可以增强用户体验,使得用户能够更深入地探索数据。

四、使用Echarts进行初级绘制

1.首先不能忘记五个基本步骤

1.导入ECharts插件

<script type="text/javascript">

2.为ECharts准备一个DOM容器

<div id="main" style="width: 600px;height: 400px;"></div>

3.基于准备好的DOM,初始化echarts实例

var myChart=echarts.init(document.getElementById('main'));

4. 指定图表的配置项和数据(对ECharts进行一些配置)

var option={ }

5.将配置和参数传递给ECharts,显示图表

myChart.setOption(option);

 2.绘制的时需要将图像类型series.type设定为sankey类型。

        桑基图节点和节点间的属性通过data和links进行维护

data属性:标记节点名称

用法:

        name:'节点名称'

links属性:标记节点间关系 

用法:

        source:'初始节点'

        target:'目标节点'

        value:'节点值'

下面代码设置:4个节点,3种关系连接起来 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src ="JS/echarts.js"></script>
</head>
<body>
<div id='main' style="width:300px;height:500px"></div>

<script>
var mychart = echarts.init(document.getElementById('main'));
var option={
		title:{
			text:'桑基图基本绘制',
			left:'center'
		},
		series:[
			{
				type:'sankey',
				data:[
					{name:'节点1'},
					{name:'节点2'},
					{name:'节点3'},
					{name:'节点4'}
				],
				links:[
					{source:'节点1',target:'节点2',value:10},
					{source:'节点2',target:'节点3',value:5},
					{source:'节点3',target:'节点4',value:15},
				]
			}
		]
		
		
};
mychart.setOption(option);

</script>

</body>
</html>

简单的一个桑基图就完成了

  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在echarts桑基图中使用动态数据,你可以按照以下步骤进行操作: 1. 首先,引入echarts库和桑基图组件。你可以使用如下代码在组件中引入: ```javascript const echarts = require('echarts5/lib/echarts'); require('echarts/lib/chart/sankey'); ``` 2. 在main.js文件中注册echarts。你可以使用如下代码进行注册: ```javascript import * as echarts5 from 'echarts5'; Vue.use(echarts5); ``` 3. 在组件的mounted生命周期钩子函数中,定义option对象,并配置图表的参数。你可以使用如下代码进行配置: ```javascript onMounted(() => { const myChart = echarts.init(chart.value); const option = { title: { text: '人口迁移桑基图', left: 'center', textStyle: { color: '#333', fontSize: 20, fontWeight: 'bold', }, }, tooltip: { trigger: 'item', triggerOn: 'mousemove', }, series: [ { type: 'sankey', data: nodes.map(n => ({ name: n })), links: data.map(d => ({ source: d.source, target: d.target, value: d.value })), lineStyle: { opacity: 0.5, curveness: 0.3, }, label: { position: 'right', color: '#000', }, emphasis: { focus: 'adjacency', itemStyle: { borderWidth: 2, borderColor: '#333', }, }, }, ], }; myChart.setOption(option); }); ``` 这样,你就可以在echarts桑基图中使用动态数据。只需将数据传递给`nodes`和`data`变量即可。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [echarts 桑基图](https://blog.csdn.net/lance_heart/article/details/126195333)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [极致呈现系列之:Echarts桑基图的流动旋律](https://blog.csdn.net/w137160164/article/details/131341100)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值