gpt4 book ai didi

python - 如何使用 datashader 为图表的节点着色?

转载 作者:行者123 更新时间:2023-12-01 08:01:35 24 4
gpt4 key购买 nike

我想使用 datashader 可视化图形(我有很多节点),如下所示

import holoviews as hv
import pandas as pd
import dask.dataframe as dd
from holoviews.operation.datashader import (
datashade, aggregate, dynspread,
bundle_graph, split_dataframe, regrid
)
from holoviews.element.graphs import layout_nodes
from datashader.layout import random_layout

hv.extension('bokeh')

sources = [3, 1, 2, 3, 4]
targets = [5, 5, 5, 5, 5]
df = pd.DataFrame({'source': sources, 'target': targets})
edges_df = dd.from_pandas(df, npartitions=3)

graph = layout_nodes(hv.Graph(edges_df), layout=random_layout)
pad = dict(x=(-.5, 1.3), y=(-.5, 1.3))
datashade(graph, width=800, height=800) * graph.nodes.redim.range(**pad)

这可行,但我的图表是 bipartite ,我想用不同的颜色为 sourcestargets 节点着色,例如使用如下调色板:
my_colors_dict = {5: '红色', 3: '蓝色', 1: '蓝色', 2: '蓝色', 4: '蓝色'}
(即所有节点都是蓝色的,但我的目标中的单个节点“5”)

我怎样才能实现这个目标?我对这个库还不是很熟悉,到目前为止只能做出笨拙的尝试..

最佳答案

您应该能够通过为每个节点分配一个类别,然后将该列映射到颜色来实现此目的,如 http://holoviews.org/user_guide/Style_Mapping.html 中所述。 。但是,如果您不想更改数据结构并且不介意有点黑客行为,那么您始终可以通过覆盖重新着色的节点子集来实现:

targets = graph.nodes.clone()
targets.data = graph.nodes.data[4:]

datashade(graph, width=800, height=800) * graph.nodes.redim.range(**pad) * targets.opts(color='red')

enter image description here

关于python - 如何使用 datashader 为图表的节点着色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55708721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com