Создание гистограммы с помощью ggplot и Shiny in R - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь сделать гистограмму с помощью ggplot и Shiny в R, но мои данные структурированы странным образом, что, кажется, делает эту задачу более сложной, чем ожидалось. Фрейм данных выглядит примерно так:

Name       Percent 1     Percent 2    Percent 3
A          45            10           45
B          30            20           50
C          10            35           55

По сути, я бы хотел, чтобы моя гистограмма отображала каждый процент в виде "бара" в зависимости от того, что кто-то выбирает. Например, если в моем приложении Shiny есть раскрывающееся меню с надписью «выбрать имя» и кто-то выбирает букву А, полученное изображение должно быть тремя полосами, на которых показано 45%, 10% и 45%, с «Процент 1», «Процент 2». "и" Процент 3 "в качестве меток.

Спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Сначала необходимо убедиться, что у вас есть «аккуратные данные» (= каждая переменная помещается в столбец, а каждый столбец является переменной). Для этого вы можете использовать функцию collect () пакета tidyr; e.g.:

gather(stack, percent, value, -Name)

Более подробную информацию о приборных данных вы можете найти здесь: https://r4ds.had.co.nz/tidy-data.html

0 голосов
/ 05 ноября 2018

Я думаю, что вам нужно провести некоторую обработку данных, прежде чем вы сможете сделать какую-либо визуализацию с этими данными. Вот пример кода, который может сделать эту работу за вас:

stack <- data.frame( name = c('A','B','C'),
                      percent1 = c(45,10,45),
                      percent2 = c(30,20,50),
                      percent3 = c(10,35,55),
                      stringsAsFactors = FALSE)
stack_ <- stack %>% gather(percent, value, percent1:percent3)

stack_ <- stack_ %>% filter(name == 'A')

p<-ggplot(data=stack_, aes(x=percent, y=value)) +
  geom_bar(stat="identity")
p
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...