python 中 pyecharts.charts Sankey排序问题

qq_41608422 2021-02-20 09:08:13
想按照Topic1-Topic7排序,这个应该如何调整啊,在数据中是按照这个顺序排的,但是显示就乱了!请各位大虾帮忙看下呗!谢谢啊




代码如下:
import pandas as pd
from pyecharts.charts import Page, Sankey
from pyecharts import options as opts

# 读取csv文件
data = pd.read_csv('sankey.csv', encoding='utf-8', header=None)

# 生成nodes
nodes = []

# 在第一列"source"中查找添加节点名称
for i in data[0].unique():
dic = {'name': i}
nodes.append(dic)
# 在第二列"target"中查找添加节点名称
for i in data[1].unique():
dic = {'name': i}
if dic not in nodes:
nodes.append(dic)

# 生成links1
links = []
for i in data.values:
dic = {'source': i[0], 'target': i[1], 'value': i[2]}
links.append(dic)

# 读取数据中的标题、副标题和图例名称
titleN = data.values[0][5]
subtitleN = data.values[1][5]
serialN = data.values[2][5]

# 生成可视化结果
c = (
Sankey()
.add(
serialN,
nodes,
links,
# 设置主图在图片区域的相对位置
pos_top="10%", pos_bottom="5%", pos_right="10%", pos_left="5%",

# 桑基图中每个矩形节点的宽度,每一列任意两个矩形节点之间的间隔,
# 节点的对齐方式,默认是双端对齐,可以设置为左对齐或右对齐,对应的值分别是"left""right""justify"
node_width=20, node_gap=8, node_align="left",

# 桑基图中节点的布局方向,可以是水平的从左往右,也可以是垂直的从上往下。
# 对应的参数值分别是 horizontal, vertical。
orient="horizontal",

# 控制节点拖拽的交互,默认开启。开启后,用户可以将图中任意节点拖拽到任意位置。若想关闭此交互,只需将值设为 false 就行了。
is_draggable=True,
# 鼠标 hover 到节点或边上,相邻接的节点和边高亮的交互,默认关闭,可手动开启。
# false:hover 到节点或边时,只有被 hover 的节点或边高亮。
# true:同 'allEdges'。
# 'allEdges':hover 到节点时,与节点邻接的所有边以及边对应的节点全部高亮。hover 到边时,边和相邻节点高亮。
# 'outEdges':hover 的节点、节点的出边、出边邻接的另一节点 会被高亮。hover 到边时,边和相邻节点高亮。
# 'inEdges':hover 的节点、节点的入边、入边邻接的另一节点 会被高亮。hover 到边时,边和相邻节点高亮。
focus_node_adjacency=True,

# 线条样式配置项,
linestyle_opt=opts.LineStyleOpts(opacity=0.2,
# 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。

curve=0.5,
# 线的弯曲度,0 表示完全不弯曲

color="source",
type_="dotted"),
# 线的类型。可选:'solid', 'dashed', 'dotted'

label_opts=opts.LabelOpts(position="right",
# 标签的位置。可选
# 'top','left','right','bottom','inside','insideLeft','insideRight'
# 'insideTop','insideBottom', 'insideTopLeft','insideBottomLeft'
# 'insideTopRight','insideBottomRight'

# 文字的字体大小
font_size=12,

), )
.set_global_opts(
# 设置标题和副标题
title_opts=opts.TitleOpts(title=titleN, subtitle=subtitleN),

tooltip_opts=opts.TooltipOpts(trigger="item", trigger_on="mousemove"),

# 是否显示图例
legend_opts=opts.LegendOpts(is_show=True,
item_width=25, item_height=14,
legend_icon="pin",

# 右侧靠齐
pos_right="5%", )
)
)
# 输出html可视化结果
c.render('sankey.html')
...全文
1039 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
逃跑的洞洞 2021-12-04
  • 打赏
  • 举报
回复 1

博主搞定了吗,我也遇到了这个问题。。

37,744

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧