python绘制桑吉图

昨晚研究了一晚上,给小伙伴们分享一下新学会的桑吉

import pandas as pd
import numpy as np
from pyecharts.globals import CurrentConfig, OnlineHostType
from pyecharts import options as opts  # 图形设置
from pyecharts.charts import Sankey    # 导入桑基图型的类

加载数据

#单线桑吉图
df=pd.read_excel('D:\用户画像\桑吉图\桑吉图数据源3_1.xlsx')
# df=df.iloc[0:16,2:]
# df.values
df=df.iloc[33:,2:5]

 数据结构如下

 

nodes=[]
list_index = [0,1]
for i in list_index:
    vales=df.iloc[:,i].unique()
    print(vales)
    for value in vales:
        dic={}
        dic['name']=value
        nodes.append(dic)
linkes=[]
for i in df.values:
    dic={}
    dic['source']=i[0]
    dic['target']=i[1]
    dic['value']=i[2]
    if dic['value'] == 0:
        pass
    else:
        linkes.append(dic)
print(linkes)
pic=(
    Sankey().add(
        '',#图例名称
        nodes,#传入节点数据
        # linkes,#传入边和流量数据
        linkes,
        #设置透明度、弯曲度、颜色
        linestyle_opt=opts.LineStyleOpts(opacity=0.3,curve=0.5,color='source'),
        #标签显示位置
        label_opts=opts.LabelOpts(position='right'),
        #节点之间的距离
        node_gap=30,
    )
    .set_global_opts(title_opts=opts.TitleOpts(title='11月新员工评分区间变动'))
)
pic.render('D:/用户画像/桑吉图/11月新员工评分区间变动11.html')

效果如下

 

多流程桑吉图

加载数据

#多流程桑吉图

df=pd.read_excel('D:\用户画像\桑吉图\桑吉图数据源3_1.xlsx')
# df=df.iloc[:,2:5]
df=df.iloc[:32,2:5]
df

数据结构如下

# 父类+子类中的数据,需要去重
 
df['父类'].tolist()
df['子类'].tolist()

# 将两个列表相加,在转成集合set进行元素去重,再转成列表
 
nodes = list(set(df['父类'].tolist() + df['子类'].tolist())) 


# 节点列表数据: nodes_list
 
nodes_list = []
for i in nodes:
    dic = {}
    dic["name"] = i
    nodes_list.append(dic)
nodes_list

links_list = []
 
for i in range(len(df)):
    dic = {}
    dic['source'] = df.iloc[i,0]  # 父类
    dic['target'] = df.iloc[i,1]  # 子类
    dic['value'] = int(df.iloc[i,2])   # 数据值 : 使用int函数直接强制转换,防止json.dump()报错
    links_list.append(dic)

c = (
    Sankey()
    .add(
        "员工评分变动情况",
        nodes_list,
        links_list,
        linestyle_opt=opts.LineStyleOpts(opacity=0.5, curve=0.5, color="source"),
        label_opts=opts.LabelOpts(position="right"),
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="连续三月在职员工桑葚图"))
)
 
# c.render_notebook()
c.render('D:\用户画像\桑吉图\连续三月在职员工评分变动10_12.html')

 

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Python桑吉图错乱是指使用Python语言绘制桑吉图时出现了错误或混乱的情况。桑吉图是一种可视化工具,用于表示不同类别之间的关系,通常用于展示数据的流向和交叉情况。 出现Python桑吉图错乱可能有以下几个原因: 1. 数据格式错误:绘制桑吉图需要明确的数据格式,包括起始点、终点和流量。如果数据格式不正确,就会导致桑吉图绘制错误或混乱。 2. 数据处理错误:在生成桑吉图之前,需要对原始数据进行处理和转换。如果数据处理的步骤出错或数据处理方式不正确,就会导致绘制桑吉图失真或错乱。 3. 数据量过大:当数据量非常庞大时,绘制桑吉图可能会变得困难,因为绘图过程需要处理大量的数据。如果处理数据的计算复杂度过高,就可能导致桑吉图绘制出错或混乱。 解决Python桑吉图错乱问题可以参考以下几个方法: 1. 检查数据格式:确保数据符合正确的格式要求,包括起始点、终点和流量的定义。可以使用数据处理工具或函数来检查和验证数据格式的正确性。 2. 仔细处理数据:在数据预处理和转换阶段要仔细检查数据处理的步骤和方法。确保数据的准确性和一致性,避免在数据处理过程中引入错误。 3. 分析和优化算法:当面临大规模数据时,可以对算法进行优化,提高绘制桑吉图的效率。可以使用一些高效的数据结构和算法来减少计算复杂度。 总之,Python桑吉图错乱问题通常可以通过检查数据格式、仔细处理数据和优化算法等方法来解决。通过确保数据的正确性和算法的高效性,可以避免绘制桑吉图时出现错误或混乱的情况。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值