【问题标题】:Why is that Trelliscope viewer showing empty panels, no images?为什么 Trelliscope 查看器显示空面板,没有图像?
【发布时间】:2021-08-03 22:40:18
【问题描述】:

我在 Pokemon 上有以下数据框“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”)。虽然它按预期生成了一个包含 18 个页面的查看器,覆盖了 801 个面板,但所有面板都是空的,我看不到图像。

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)

有人可以帮忙解释和解决吗?

【问题讨论】:

    标签: r trellis


    【解决方案1】:

    口袋妖怪数据集是available online,其中facilitates testing:

    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 选项卡,然后选择要排序的变量:口袋妖怪出现;-)

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

    【讨论】:

      【解决方案2】:

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

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

      1. 直接从网址访问和查看图片

        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)

      【讨论】:

        猜你喜欢
        • 2014-03-30
        • 2020-08-31
        • 2014-12-26
        • 2020-07-09
        • 2017-05-03
        • 2021-11-09
        • 2014-06-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多