Ошибка "Столбцы` x`, `y` должны быть 1d атомными векторами или списками" в hchart - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь нарисовать барплот в R, используя библиотеку highcharter

Мой фрейм данных mostly_used выглядит примерно так:

        word    n
1        sir 8484
2       time 7339
3       miss 5954
4       dear 5422
5       hand 5305
6       head 4978
7      night 4240
8        day 4124
9       eyes 4040
10     house 4011

и я использую следующую строку кода:

hchart(mostly_used, x = word, y = n, type = "column", name = "word count"
       , color = "blue")  %>% hc_add_theme(hc_theme_null())

Я получаю ошибку Error: Columns`x`, `y` must be 1d atomic vectors or lists

Может кто-нибудь объяснить, почему это так?

редактирование:

> dput(mostly_used)
structure(list(word = c("sir", "time", "miss", "dear", "hand", 
"head", "night", "day", "eyes", "house"), n = c(8484L, 7339L, 
5954L, 5422L, 5305L, 4978L, 4240L, 4124L, 4040L, 4011L)), .Names = c("word", 
"n"), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"
))

1 Ответ

0 голосов
/ 02 мая 2018

Я посмотрел документацию и увидел, что в примерах не использовался синтаксис, который вы пробовали. Это оказалось более функциональным. (Мои усилия предшествовали вашему редактированию, которое включало пример данных, поэтому мой mostly_used был просто обычным фреймом данных, поэтому я использовал as.character, чтобы вызвать то, что я считал фактором. Это оказалось ненужным, но безвредным.)

Я взял пример типа линии из виньетки на моем компьютере: http://localhost:13297/library/highcharter/doc/replicating-highcharts-demos.html и заменил соответствующие значения:

highchart() %>% 
  hc_chart(type = "column") %>% 
  hc_title(text = "Counts of Mostly Used") %>% 
    hc_xAxis(categories = as.character(mostly_used$word)) %>% 
  hc_yAxis(title = list(text = "N")) %>% 
  hc_plotOptions(line = list(
    dataLabels = list(enabled = TRUE),
    enableMouseTracking = FALSE)
    ) %>% 
  hc_series(
    list(  name = "Used",
      data = mostly_used$n
    )
  )

Это скриншот того, что появилось в моей сессии Chrome:

enter image description here

Ваш комментарий с цитатой к другой части документации показал, что существует функция hcaes, обернутая вокруг назначений аргументов x и y. Это сработало для меня:

hchart(mostly_used ,type = "column", title="Counts of Mostly Used",
                     hcaes( x = word, y=   n)    )

«Почему» - это необходимость уважать обработку этого пакета нестандартной оценки. Он эмулирует стратегию пакета ggplot2, заключающуюся в использовании функции «aes» для определения имен столбцов с использованием реальных имен R, то есть токенов без кавычек, которые оцениваются в контексте аргумента данных.

...