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]]