1

我在口袋妖怪上有以下数据框“p”。

library("dplyr")
library("trelliscopejs")

glimpse(p)
Rows: 801
Columns: 5
$ pokemon       <chr> "bulbasaur", "ivysaur", "venusaur~
$ type_1        <chr> "grass", "grass", "grass", "grass~
$ attack        <int> 49, 62, 82, 100, 52, 64, 84, 130,~
$ generation_id <chr> "1", "1", "1", NA, "1", "1", "1",~
$ url_image     <chr> "http://assets.pokemon.com/assets~

我正在创建一个面板列,然后应用 Trelliscope 以访问和查看来自网络的口袋妖怪图像(对应于数据帧的“url_image”)。尽管它按预期生成了一个包含 801 个面板的 18 页的查看器,但所有面板都是空的,我看不到图像。

p <- p %>%  mutate(panel = img_panel(url_image), pokemon = cog(val = pokemon, default_label = TRUE))

trelliscope(p, name = "pokemon", ncol=6, nrow=3)

我已将所有 801 图像下载到本地文件夹“pokemon_local”,并尝试使用以下代码在 Trelliscope 中查看它们。不幸的是,虽然 Trelliscope 查看器正在生成,但面板是空的。

path <- file.path("D:/xyz/pokemon_local")
dir.create(path)

for (url in p$url_image)
  download.file(url, destfile=file.path(path,basename(url)), quiet=TRUE, mode="wb")

p$image <- basename(p$url_image)
p<- mutate(p, panel=img_panel_local(image))

trelliscope(p, name="pokemon", nrow=3, ncol=6, path=path)

有人可以提供解释和解决方案吗?

4

2 回答 2

2

口袋妖怪数据集可在线获取便于测试

library(dplyr)
library(trelliscopejs)

pok <- read.csv("https://raw.githubusercontent.com/hafen/pokRdex/master/pokRdex_mod.csv") %>%
  mutate_at(vars(matches("_id$")), as.character)

pok %>%
  mutate(panel = img_panel(url_image)) %>%
  trelliscope("pokemon", nrow = 3, ncol = 6,
              state = list(labels = c("pokemon", "pokedex")))

只需转到Sort侧边栏中的选项卡并选择一个变量进行排序:口袋妖怪出现;-)

在此处输入图像描述

自 2017 年以来, trelliscope 问题似乎一直处于搁置状态,这或许可以解释为什么这种意外行为没有得到纠正。

于 2021-05-15T20:02:00.793 回答
1

经过多次反复试验,根据@Waldi 的回答中提供的提示,我发现我需要添加带有“pokemon”和“pokdex”元素标签列表的“状态”变量。如果我们忽略其中任何一个,它就不起作用。我不知道为什么?顺便说一句,我尝试使用“gapminder”数据集的其他几个示例(与“pokemon 数据集”不同,与图像无关),我们不需要创建“状态”变量。

因此,如果我们使用以下代码更改问题中的trelliscope() 函数代码,这两个选项都将起作用。

  1. 直接从 Web url 访问和查看图像

    trelliscope(p, name="pokemon", nrow=3, ncol=6, state = list(labels = c("pokemon", "pokedex")))

  2. 访问和查看存储在本地磁盘上的图像

    trelliscope(p, name="pokemon", nrow=3, ncol=6, state = list(labels = c("pokemon", "pokedex")), path=path)

于 2021-05-16T08:54:31.093 回答