桑基图制作

举报
8181暴风雪 发表于 2025/02/28 19:08:52 2025/02/28
59 0 0
【摘要】 桑基图(Sankey Diagram)是一种特定类型的流程图,用于展示数据间的流量和转换。它由多个节点和连接这些节点的有向边(流)组成,节点代表不同的实体、阶段或类别,边的宽度与流量的大小成正比。以下是几种制作桑基图的方法:使用R语言R语言中有多个包可以用于制作桑基图,其中networkD3包是一个流行的选择。以下是使用networkD3包制作桑基图的步骤:安装并加载必要的R包:instal...

桑基图(Sankey Diagram)是一种特定类型的流程图,用于展示数据间的流量和转换。它由多个节点和连接这些节点的有向边(流)组成,节点代表不同的实体、阶段或类别,边的宽度与流量的大小成正比。以下是几种制作桑基图的方法:

使用R语言

R语言中有多个包可以用于制作桑基图,其中

networkD3

包是一个流行的选择。以下是使用

networkD3

包制作桑基图的步骤:

  1. 安装并加载必要的R包:
install.packages("networkD3")
library(networkD3)
  1. 准备数据。桑基图的数据通常包含三列:起点、终点和权重。
  2. 使用

    sankeyNetwork
    函数创建桑基图:
# 示例数据
data <- data.frame(
  source = c("A", "A", "B", "B", "C"),
  target = c("A1", "A2", "A2", "B1", "C"),
  value = c(5, 3, 8, 3, 2)
)

# 创建桑基图
sankey_graph <- sankeyNetwork(links = data, nodes = data.frame(name = c("A", "A1", "A2", "B", "B1", "C")),
                             Source = "source", Target = "target", Value = "value",
                             nodeWidth = 10, nodePadding = 10)

# 显示桑基图
htmlWidget(sankey_graph)

使用Python

在Python中,可以使用

matplotlib

echarts

库来制作桑基图。以下是使用

matplotlib

的示例代码:

import matplotlib.pyplot as plt
from matplotlib.sankey import Sankey

# 数据
flows = [0.7, 0.3, -0.3, -0.1, -0.3, -0.1, -0.1, -0.1]
labels = ["工资", "副业", "生活", "购物", "深造", "运动", "其他", "买书"]
orientations = [1, 1, 0, -1, 1, -1, 1, 0]

# 创建桑基图
sankey = Sankey(flows, labels, orientations, color="black", fc="lightgreen", patchlabel="生活消费")
sankey.finish()

# 绘制桑基图
plt.title("日常生活开支的桑基图")
plt.show()

使用在线工具

对于不想自己安装软件的用户,可以使用在线的桑基图制作工具,如:

  • 即时设计:提供丰富的设计资源和模板,支持在线协作和交互效果。
  • Google Charts:提供强大的图表库,包括桑基图,支持网页嵌入和分享。
  • Tableau Public:数据可视化工具,可以创建和分享桑基图,适合商业分析师和研究人员。
  • SankeyMATIC:直观的在线工具,只需输入文本描述即可生成桑基图。
  • RAWGraphs:开源数据可视化框架,支持多种图表类型,包括桑基图。

选择合适的工具和方法,可以根据你的具体需求和技术背景来制作出符合预期的桑基图。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。