【问题标题】:Why can't I plot this dask dataframe with datashader (not enough values to unpack)?为什么我不能用 datashader 绘制这个 dask 数据框(没有足够的值来解包)?
【发布时间】:2019-04-15 12:43:13
【问题描述】:

我想用 datashader + holoviews 绘制一个大图,但我遇到了一个错误。
一些小而可重复的东西是:

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 forceatlas2_layout, random_layout

hv.extension('bokeh')

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

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

失败了

ValueError:没有足够的值来解包(预期 3,得到 0)
---> 17 图 = layout_nodes(hv.Graph(edges_df), layout=forceatlas2_layout)

但是,设置targets = [1, 1, 1, 1, 1] 我得到了一个情节。
使用“故障”targets,如果我使用random_layout 而不是 forceatlas2,我也会得到一个情节。

我很困惑!为什么我会收到该错误以及如何摆脱它?我正在使用数据着色器 0.7.0。

【问题讨论】:

标签: python dask holoviews datashader


【解决方案1】:

尝试将有问题的行替换为
graph = layout_nodes(hv.Graph(edges_df), layout=forceatlas2_layout, kwargs = {'id': 'index'})

这应该可以应付图书馆内部的问题。

【讨论】:

    猜你喜欢
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 2021-11-28
    • 2018-09-29
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多