我怎样才能用这些数据画出下面的桑基图呢| 来源|目标|价值|分类_链接|| - -----|- -----|- -----|- -----|| 鱼科|CE| 3|极度濒危|| 科|CE| 5个|极度濒危|| 鱼科|CE| 2|极度濒危|| 真鲨科|CE| 4|极度濒危|| 62尾鼠科|CE| 2|极度濒危|
yhxst69z1#
最简单的方法是使用pandas DataFrame。你的table看起来很接近我们想要的。然后用这个DataFrame调用hv.Sankey()。
hv.Sankey()
import pandas as pd import holoviews as hv hv.extension('bokeh') df = pd.DataFrame({ 'Source':['SPHYRNIDAE', 'TRIAKIDAE', 'DASYATIDAE',' CARCHARHINIDAE', 'UROTRYGONIDAE'], 'Target':['CE']*5, 'Value': [3,5,2,4,2] }) >>> Source Target Value 0 SPHYRNIDAE CE 3 1 TRIAKIDAE CE 5 2 DASYATIDAE CE 2 3 CARCHARHINIDAE CE 4 4 UROTRYGONIDAE CE 2 sankey = hv.Sankey(df) sankey.opts(width=600, height=400)
上面代码的输出是
要使用颜色设置边缘的样式,请向DataFrame添加一个包含颜色信息(颜色字符串或十六进制字符串)的列,并将列名传递给ops()调用中的参数edge_color。
ops()
edge_color
df = pd.DataFrame({ 'Source':['SPHYRNIDAE', 'TRIAKIDAE', 'DASYATIDAE',' CARCHARHINIDAE', 'UROTRYGONIDAE'], 'Target':['CE']*5, 'Value': [3,5,2,4,2], 'EdgeColor': ['blue', 'red', 'black', 'orange', 'magenta'] }) sankey = hv.Sankey(df) sankey.opts(width=600, height=400, edge_color='EdgeColor')
或者使用ndo中的默认颜色并将其传递给边缘。要使用左节点中的颜色,请将源的列名传递给hv.dim().str()。要使用目标节点的颜色,请将目标节点的列名传递给hv.dim().str()。
hv.dim().str()
sankey = hv.Sankey(df) sankey.opts(width=600, height=400, edge_color=hv.dim('Source').str()) # sankey.opts(width=600, height=400, edge_color=hv.dim('Target').str())
这段代码是在散景3.1.1、面板1.0.2和全息视图1.16.0上运行的
https://holoviews.org/reference/elements/matplotlib/Sankey.html#sankey
1条答案
按热度按时间yhxst69z1#
最简单的方法是使用pandas DataFrame。你的table看起来很接近我们想要的。然后用这个DataFrame调用
hv.Sankey()
。上面代码的输出是
要使用颜色设置边缘的样式,请向DataFrame添加一个包含颜色信息(颜色字符串或十六进制字符串)的列,并将列名传递给
ops()
调用中的参数edge_color
。或者使用ndo中的默认颜色并将其传递给边缘。要使用左节点中的颜色,请将源的列名传递给
hv.dim().str()
。要使用目标节点的颜色,请将目标节点的列名传递给hv.dim().str()
。评论
这段代码是在散景3.1.1、面板1.0.2和全息视图1.16.0上运行的
参考资料
https://holoviews.org/reference/elements/matplotlib/Sankey.html#sankey