df <- data.frame(sd = c('05AP.U1 1 ','05AP.U2 1','07RT.U1 1'),percentpl = c(50,40,80),percentan = c(50,60,20),count = c(100,100,100))

sd        percentpl  percentan  count
1  05AP.U1       50        50   100
9  03KM.U2       40        60   100 
12 07RT.U1       80        20   100

Est-il possible de dessiner un barplot empilé en pourcentage uniquement sur la base de df. Je l'ai essayé avec ggplot mais j'ai échoué sur la variable fill.

ggplot(df, aes(fill=`percentpl`+`percentan`, y=count, x=`sd`)) + 
    geom_bar(position="fill", stat="identity")+ theme(axis.text = element_text(angle = 90))

J'ai vu quelques autres questions similaires R ggplot2 barplot empilé, pourcentage sur l'axe des y, nombres en barres Ajouter des étiquettes de pourcentage à un barplot empilé

0
takeITeasy 4 sept. 2020 à 16:01

1 réponse

Meilleure réponse

Peut-être que vous cherchez cela. Comme votre variable count s'ajoute à 100 en raison des valeurs dans percentpl et percentan, vous pouvez remodeler en fonction de ces variables et obtenir le tracé rempli :

library(ggplot2)
library(tidyverse)
#Data
df <- data.frame(sd = c('05AP.U1 1 ','05AP.U2 1','07RT.U1 1'),
                 percentpl = c(50,40,80),
                 percentan = c(50,60,20),
                 count = c(100,100,100))
#Melt and plot
df %>% select(-count) %>%
  pivot_longer(cols = -sd) %>%
  ggplot(aes(x=sd,y=value,fill=name)) + 
  geom_bar(position="fill", stat="identity")+
  theme(axis.text = element_text(angle = 90))

Production:

enter image description here

1
Duck 4 sept. 2020 à 13:06