Tener tres parcelas como esta:

df <- data.frame(stock = c("google", "google", "amazon", "amazon", "amazon", "yahoo", "yahoo", "yahoo"), status = c("open", "close", "open", "buy", "close", "open", "buy", "close"), category = c("daily", "daily", "daily", "daily", "daily", "daily", "daily", "daily"), price = c(330379.36, 52324.62, 545240.22, 192574.83, 46721.34, 477658.62, 146724.44, 42721.78))

Plot1:

plot1 <- ggplot(df,8 aes(fill=stock, y=reorder(price, status), x= status)) +
  geom_bar(position="dodge", stat="identity") +
  ggtitle("Daily") +
  theme(axis.text.x = element_text(angle = 45, vjust = 0, hjust=0)) +
  geom_text(aes(label=price), position = position_dodge(width= 1), vjust=0.5) + 
  scale_fill_manual(values = c("#492ecb",  "#5041ae", "#ff53aa"))

Plot2:

plot2 <- ggplot(df,8 aes(fill=stock, y=reorder(price, status), x= status)) +
  geom_bar(position="dodge", stat="identity") +
  ggtitle("Daily") +
  theme(axis.text.x = element_text(angle = 45, vjust = 0, hjust=0)) +
  geom_text(aes(label=price), position = position_dodge(width= 1), vjust=0.5) + 
  scale_fill_manual(values = c("#492ecb",  "#5041ae", "#ff53aa"))

Plot3:

plot3 <- ggplot(df,8 aes(fill=stock, y=reorder(price, status), x= status)) +
  geom_bar(position="dodge", stat="identity") +
  ggtitle("Daily") +
  theme(axis.text.x = element_text(angle = 45, vjust = 0, hjust=0)) +
  geom_text(aes(label=price), position = position_dodge(width= 1), vjust=0.5) + 
  scale_fill_manual(values = c("#492ecb",  "#5041ae", "#ff53aa"))

Y agregarlos en una parcela:

plot_grid(plot1, plot2, plot3, ncol=3, nrow=1)

¿Cómo es posible que la leyenda aparezca solo una vez? La leyenda se basa en la estética del relleno.

2
foc 20 jul. 2020 a las 18:50

1 respuesta

La mejor respuesta

Puede probar esto, si el problema es tener demasiadas leyendas (por lo que no habrá conflicto con el uso de fill para los gráficos):

library(patchwork)

plot1+plot2+plot3+plot_layout(guides = 'collect')

enter image description here

1
Duck 20 jul. 2020 a las 16:44