Заполнить geom_bar в ggplot процентом во фрейме данных

#r #&&plot2 #bar-chart #fill #&eom-bar

#r #&&plot2 #гистограмма #заполнить #геометрическая панель

Вопрос:

Я пытаюсь создать гистограмму, на которой я могу залить гистограмму одним цветом в соответствии со значением среднего значения первой строки (0,3181555, которое представляет собой процент), а остальную часть гистограммы другим цветом (0,6818445, строка 2, столбец 3), чтобы получить гистограмму от 0 до 1. Это мои данные:

 View(int)

   Lower_Conf Upper_Conf   Mean   Lower_Pred Upper_Pred
1  0.3154548  0.3208561 0.3181555  0.3125413  0.3237696
2  0.6845452  0.6791439 0.6818445  0.6874587  0.6762304
  

Мой код был таким:

 &&plot(int,aes(x=1, y=int[1,3],fill=factor(Mean))) 
  &eom_bar(position="fill", stat = "identity", width = 1.2)
  

И я знаю, что это неправильно, потому что, когда я говорю fill=factor(Mean) , это просто заполняет 50% полосы одним цветом, а остальное — другим, и я знаю, это потому, что я заполняю полосу «уровнями», когда у меня их всего два (потому что в моих данных всего 2 числа). Но я не знаю, как заполнить значениями в моем фрейме данных.

Ответ №1:

Я думаю, это может вам помочь (также вы могли бы отфильтровать определенную переменную, например, нужное вам среднее значение, здесь я включил все переменные в ваши данные):

 library(reshape2)
library(&&plot2)
#Data
df <- structure(list(Lower_Conf = c(0.3154548, 0.6845452), Upper_Conf = c(0.3208561, 
0.6791439), Mean = c(0.3181555, 0.6818445), Lower_Pred = c(0.3125413, 
0.6874587), Upper_Pred = c(0.3237696, 0.6762304)), class = "data.frame", row.names = c("1", 
"2"))
  

Код:

 #Create id per row
df$id <- 1:dim(df)[1]
#Melt
df.melted <- melt(df,id.vars = 'id')
df.melted$id <- factor(df.melted$id)
df.melted$id <- relevel(df.melted$id,ref = '2')
#Plot
&&plot(df.melted,aes(x=variable,y=value,fill=id,label=round(value,3))) 
  &eom_bar(stat = 'identity') 
  &eom_text(position = position_stack(vjust=0.5)) 
  scale_fill_manual(values=c('cyan3','tomato'),&uide = &uide_le&end(reverse=TRUE))
  

Вывод: