titre - scale_y_continuous



r-Tracer deux tracés(3 variables) avec un axe x dans ggplot (1)

Comme explication de ce que @pierre signifie ... transformez vos données du format "large" en format "long" en utilisant reshape2::melt , de sorte que le type de flux pour chaque date soit dans une colonne flow_type , et la valeur est une autre ( flow_val ). Vous spécifiez ensuite flow_type comme variable de regroupement avec laquelle affecter la couleur:

require(reshape2)

x.melted <- melt(x, id.vars = c("date", "rain"), variable.name="flow_type",
                 value.name="flow_val")

g.bottom <- ggplot(x.melted, aes(x = date),size=0.5) +
  geom_linerange(aes(ymin=0, ymax=flow_val, colour=flow_type)) +  #plot flow
  labs(x = "Date", y = "River flow (ML/day)") +
  theme_classic() +
  theme(plot.background = element_rect(fill = "transparent"),
        plot.margin = unit(c(2,0,1,1),units="lines"), 
        legend.position="bottom") + 
  scale_colour_manual(guide = guide_legend(title = "Flow Type"), 
                      values = c("obsflow"="blue", "simflow"="red"))

J'essaie de tracer deux flux et une donnée de pluie dans un graphique. Je l'ai cassé en haut et en bas comme le montre la photo suivante. Ici, j'ai deux problèmes avec ces parcelles et les âges passés, mais je ne peux pas le résoudre.

  1. Pourquoi le flux observé toujours en noir, même je l'ai mis en bleu? Ai-je accidentellement utilisé d'autres arguments pour l'écraser?
  2. Le plus important est, comment puis-je ajouter une légende pour le graphique du bas? J'ai essayé beaucoup de codes différents mais ils ne semblent pas fonctionner pour moi.

    x = data.frame(date = Date, rain = Obs_rain, obsflow = Obs_flow,simflow=Sim_flow)
    
    g.top <- ggplot(x, aes(x = date, y = rain, ymin=0, ymax=rain)) +
             geom_linerange() +
             scale_y_continuous(trans = "reverse") +
             theme_bw() +
             theme(plot.margin = unit(c(1,5,-30,6),units="points"),
             axis.title.y = element_text(vjust =0.3)) +
             labs(x = "Date",y = "Rain(mm)")
    
    g.bottom <- ggplot(x, aes(x = date, y = obsflow, ymin=0, ymax=obsflow), colour = "blue",size=0.5) +
             geom_linerange() +  #plot flow
             geom_linerange(aes(y = simflow, ymin=0, ymax=simflow), colour = "red", size =0.5)+ 
             labs(x = "Date", y = "River flow (ML/day)") +
             theme_classic() +
             theme(plot.background = element_rect(fill = "transparent"),
             plot.margin = unit(c(2,0,1,1),units="lines"))
    
    grid.arrange(g.top,g.bottom, heights = c(1/5, 4/5)) 

Mettre à jour:

J'ai résolu le problème avec la couleur de la ligne bleue. J'ai accidentellement mis des arguments au mauvais endroit. Mais je suis toujours aux prises avec la légende.

    g.bottom <- ggplot(x, aes(x = date, y = obsflow, ymin=0, ymax=obsflow)) +
                geom_linerange(colour = "blue",size=0.5) +  #plot flow




ggplot2