Javier Gómez Gonzalez
2019-Mar-20 01:16 UTC
[R-es] Rellenar espacio entre dos curvas ggplot2
Estimados amigos: He realizado un diagrama ombrométrico con ggplot2. En este diagrama la curva de la temperatura y la precipitación se cortan en dos puntos creando tres regiones. Necesito rellenar estas tres regiones cada una de un color o rallado diferente, pero sólo la parte entre las dos curvas y no sé como hacerlo. El código empleado es el siguiente: tem <- c(6.7, 6.3, 7.8, 10.5, 14.0, 18.0, 22.6, 25.9, 25.0, 20.4, 16.1, 9.9) prec <- c(48.6, 43.5, 46.8, 41.7, 41.4, 27.1, 6.2, 0.2, 4.6, 20.1, 43.3, 54.2) mes <- c("ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov", "dic") datos <- data.frame(mes,tem,prec) # Ordenamos el factor mes datos$mes <- factor(datos$mes,levels=c("ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov", "dic")) p1 <- ggplot() + geom_line(aes(x =mes, y = tem, colour = "Temperatura", group=1), size=0.85,data = datos) + labs(title="Diagrama ombrométrico",x="Mes",y=expression(Temperatura~~"/"~~ºC))+ theme(plot.title=element_text(hjust 0.5,size=rel(1.3)))+theme(axis.title=element_text(size=rel(1.1)))+ theme(axis.text = element_text(size=rel(1))) p2 <- p1 + geom_line(aes(x =mes, y =prec/2, group=1,colour "Precitación"),size=0.85, data = datos) + scale_colour_discrete("Type")+ scale_y_continuous(sec.axis sec_axis(~.*2, name=expression(precitación~~"/"~~mm))) p3 <- p2 + guides(colour=guide_legend(title=NULL)) + theme(legend.position="top") [[alternative HTML version deleted]]
Si te vale R-base no parece complejo. Le puedo echar un vistazo Saludos Fer ?Sent from my Delorean in 1789 using a phone Sent from BlueMail ? On 20 Mar. 2019, 12:13, at 12:13, "Javier Gómez Gonzalez" <zaragatan en gmail.com> wrote:>Estimados amigos: > >He realizado un diagrama ombrométrico con ggplot2. En este diagrama la >curva de la temperatura y la precipitación se cortan en dos puntos >creando >tres regiones. Necesito rellenar estas tres regiones cada una de un >color o >rallado diferente, pero sólo la parte entre las dos curvas y no sé como >hacerlo. > >El código empleado es el siguiente: > >tem <- c(6.7, 6.3, 7.8, 10.5, 14.0, 18.0, 22.6, 25.9, 25.0, 20.4, 16.1, >9.9) > >prec <- c(48.6, 43.5, 46.8, 41.7, 41.4, 27.1, 6.2, 0.2, 4.6, 20.1, >43.3, >54.2) > >mes <- c("ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", >"oct", "nov", "dic") > >datos <- data.frame(mes,tem,prec) > ># Ordenamos el factor mes > >datos$mes <- factor(datos$mes,levels=c("ene", "feb", "mar", "abr", >"may", >"jun", "jul", "ago", "sep", "oct", "nov", "dic")) > > >p1 <- ggplot() + > > geom_line(aes(x =mes, y = tem, colour = "Temperatura", group=1), >size=0.85,data = datos) + > > labs(title="Diagrama >ombrométrico",x="Mes",y=expression(Temperatura~~"/"~~ºC))+ > > theme(plot.title=element_text(hjust >0.5,size=rel(1.3)))+theme(axis.title=element_text(size=rel(1.1)))+ > > theme(axis.text = element_text(size=rel(1))) > > >p2 <- p1 + geom_line(aes(x =mes, y =prec/2, group=1,colour >"Precitación"),size=0.85, data = datos) + > > scale_colour_discrete("Type")+ scale_y_continuous(sec.axis >sec_axis(~.*2, name=expression(precitación~~"/"~~mm))) > > >p3 <- p2 + guides(colour=guide_legend(title=NULL)) + >theme(legend.position="top") > > [[alternative HTML version deleted]] > >_______________________________________________ >R-help-es mailing list >R-help-es en r-project.org >https://stat.ethz.ch/mailman/listinfo/r-help-es[[alternative HTML version deleted]]
Hola, Una forma de hacerlo es definir un polígono en esas regiones y colorearlo. Mira esta ayuda de cómo hacerlo: https://stackoverflow.com/questions/42481783/how-to-fill-colors-correctly-in-geom-polygon-in-ggplot Saludos, Carlos Ortega www.qualityexcellence.es El mié., 20 mar. 2019 a las 2:13, Javier Gómez Gonzalez (< zaragatan en gmail.com>) escribió:> Estimados amigos: > > He realizado un diagrama ombrométrico con ggplot2. En este diagrama la > curva de la temperatura y la precipitación se cortan en dos puntos creando > tres regiones. Necesito rellenar estas tres regiones cada una de un color o > rallado diferente, pero sólo la parte entre las dos curvas y no sé como > hacerlo. > > El código empleado es el siguiente: > > tem <- c(6.7, 6.3, 7.8, 10.5, 14.0, 18.0, 22.6, 25.9, 25.0, 20.4, 16.1, > 9.9) > > prec <- c(48.6, 43.5, 46.8, 41.7, 41.4, 27.1, 6.2, 0.2, 4.6, 20.1, 43.3, > 54.2) > > mes <- c("ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", > "oct", "nov", "dic") > > datos <- data.frame(mes,tem,prec) > > # Ordenamos el factor mes > > datos$mes <- factor(datos$mes,levels=c("ene", "feb", "mar", "abr", "may", > "jun", "jul", "ago", "sep", "oct", "nov", "dic")) > > > p1 <- ggplot() + > > geom_line(aes(x =mes, y = tem, colour = "Temperatura", group=1), > size=0.85,data = datos) + > > labs(title="Diagrama > ombrométrico",x="Mes",y=expression(Temperatura~~"/"~~ºC))+ > > theme(plot.title=element_text(hjust > 0.5,size=rel(1.3)))+theme(axis.title=element_text(size=rel(1.1)))+ > > theme(axis.text = element_text(size=rel(1))) > > > p2 <- p1 + geom_line(aes(x =mes, y =prec/2, group=1,colour > "Precitación"),size=0.85, data = datos) + > > scale_colour_discrete("Type")+ scale_y_continuous(sec.axis > sec_axis(~.*2, name=expression(precitación~~"/"~~mm))) > > > p3 <- p2 + guides(colour=guide_legend(title=NULL)) + > theme(legend.position="top") > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]