我有一些简单的代码,可以生成一个漂亮的Sankey图表
import holoviews as hv
import plotly.graph_objects as go
import plotly.express as pex
hv.extension('bokeh')
sankey1 = hv.Sankey(df_final, kdims=['Sub_Market', 'Sport League'], vdims=["Revenue"])
hv.Sankey(sankey1)
sankey1.opts(cmap='Colorblind',label_position='right',
edge_color='Sub_Market', edge_line_width=0,
node_alpha=1.0, node_width=40, node_sort=True,
width=800, height=600, bgcolor="snow",
title="Flow of Revenue between Sub Market and Conference")
不幸的是,这些数字呈指数增长。我真的很想把它们以百万计展示出来。还有,有没有办法让右边的标签显示在右边,同时让左边的标签显示在左边,这样它们都在图表之外,更容易阅读
谢谢你的时间
下面的解决方案适用于
holoviews
,并且(可能)对plotly
无效在
holoviews
中,您可以添加hv.Dimension(spec, **params)
,这使您有机会将带有关键字value_format
的格式化程序应用于列名。此格式化程序可以预定义或定义。下面的示例演示如何通过自定义python函数定义简单的格式化程序示例代码
输出
首先,holoview允许为维度配置自定义格式
要按原样呈现数字,可以使用
str
函数作为维度的格式化程序我使用了一个示例数据框来展示如何实现这一点。您可以在this runnable collab notebook中运行它
现在要自定义标签的位置,需要渲染的打印
这里我们使用
bokeh
作为后端,可以通过将图形对象作为参数转发给bokeh
渲染器的get_plot
方法来获得绘图现在,我们可以访问要自定义的绘图句柄。 应用于所有标签的默认
x_offset
值为0
。 我们只需要在左侧标签上应用偏移为此,我们增加了标签的数据源,以包含一个“x_offset”字段,并为我们希望定位在四边形左侧的标签设置偏移量
此外,我们需要设置
plot.xrange
的起始点,这样绘图就不会被截断最后,我们可以将绘图渲染为SVG组件,并将其显示在笔记本中
相关问题 更多 >
编程相关推荐