Изменение цвета бара в гистограмме в Shiny - PullRequest
1 голос
/ 19 марта 2019

У меня есть приложение Shiny, которое в основном создает график на основе линий, выбранных пользователем в таблицах.Существует две таблицы: первая выдает первые 3 столбца слева (тест), остальные - из второй таблицы. Image of graphs

Мой вопрос к вам:По вашему мнению, можно ли оставить первые 3 столбца слева синим и использовать другие цвета для всех остальных?

Вот код, который я использовал в приложении для создания графиков:

output$graphPost <- renderPlot({
      s <- input$posttestsdata_rows_selected
      y <- input$benchmarkdata_rows_selected
      tempBench <- benchmarkData[y]
      meltedBench <- melt(tempBench)
      tempPost <- postTestsData[s]
      colnames(tempBench)[1] <- "x"
      colnames(tempPost)[1] <- "x"
      postTestsDataForGraph <- rbind(tempBench, tempPost)
      meltPostTests <- melt(postTestsDataForGraph)
      meltPostTests$x <- factor(meltPostTests$x, levels=unique(meltPostTests$x))
      postTestsPlot <<- ggplot() +
        geom_bar(data = meltPostTests, aes(x = as.factor(x), y = value, fill = variable), stat='identity', position = "dodge") + 
        theme(axis.line=element_blank(),
              axis.text.y=element_blank(),
              axis.ticks=element_blank(),
              axis.title.x=element_blank(),
              axis.title.y=element_blank(),
              panel.background=element_blank(),
              panel.border=element_blank(),
              panel.grid.major=element_blank(),
              panel.grid.minor=element_blank(),
              plot.background=element_blank()) + 
        geom_hline(yintercept = meltedBench$value, color = c("#1F497D", "#4F81BD", "#8DB4E3")) + 
        geom_text(aes(x = as.factor(meltPostTests$x), y = meltPostTests$value, fill=meltPostTests$variable, label = paste(meltPostTests$value,"%", sep = "")), position=position_dodge(width=0.9), vjust=-0.25) + 
        scale_fill_manual(values = c("#1F497D", "#4F81BD", "#8DB4E3"))
      return(postTestsPlot)
    })

Спасибо,

Реми

1 Ответ

0 голосов
/ 19 марта 2019

Чтобы повлиять на цвета первых 3 тактов, вам нужно использовать другое значение для эстетики fill, чем variable

Например:

require(ggplot2)

set.seed(314)
dat <- data.frame(x = rep(1:3,10),
                  variable = sample(1:3, 30, replace = T))

dat$c <- as.factor(ifelse(dat$x == 1,1,dat$variable+1))



ggplot(dat, aes(x = interaction(variable,x), fill = c)) +
  geom_bar(data = dat, aes(fill = c), position = position_dodge()) +
  scale_x_discrete(breaks = c('2.1','2.2','2.3'),
                   labels = unique(dat$variable))

дает:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...