Buenas tardes, Estoy intentando mejorar un gráfico que construyo pero de manera "bruta" y quiere encontrar una manera más eficiente. El gráfico en cuestión tiene más partes pero para simplificar la parte que me interesa es esta: [image: Imágenes integradas 5] Esto es una elipse de confianza de unos puntos, la elipse la consigo ayudándome de dataEllipse (paquete car), para llegar a este gráfico lo hago de la siguiente manera: -Construyo una función que me dice si un punto (x,y) está dentro o no de la elipse. -Hago un mallado de 100x100 (en pasos de 0,125) y miro si estoy dentro de la elipse o no (*Esto es lo que quiere evitar) *(podría hacer el mallado solo desde el rectángulo que envuelve la elipse pero quiero conseguir algo mejor) -Voy recorriendo el eje x y me quedo con el valor de y en "FUERA" antes de "DENTRO" y el "FUERA" después de "DENTRO" y así poder construir el gráfico anterior que está construido en trozos, si pongo colores: [image: Imágenes integradas 4] Alguien tiene alguna sugerencia de como conseguir esto pero sin tener que hacer un mallado, con geom_path puedo dibujar la elipse pero no se hacer lo que quiero. Adjunto un código reproducible con lo que tengo (en el código hay algunos for que supongo que se podrían juntar pero lo que realmente hace lento el proceso es la sentencia apply(malla[,1:2],1,cual) que es lo que quiero evitar) Muchas gracias y saludos. -- Jorge Ayuso Rejas ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20130307/459e2e01/attachment-0001.html> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: no disponible Type: image/png Size: 14226 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20130307/459e2e01/attachment-0002.png> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: no disponible Type: image/png Size: 13158 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20130307/459e2e01/attachment-0003.png> ------------ próxima parte ------------ A non-text attachment was scrubbed... Name: Ejemplo.R Type: application/octet-stream Size: 2017 bytes Desc: no disponible URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20130307/459e2e01/attachment-0001.obj>
No se si entendí lo que quieres, pero no entendí porque usas geom_area, para pintar el interior de geom_path me parece mejor usar geom_polygon. Fijate si algo asi te ayuda: rm(list=ls()) set.seed(12345) library(ggplot2) library(car) library(fields) library(memisc) datos<-data.frame(x=rnorm(20,60,15),y=rnorm(20,90,2)) dataEllipse(datos$x,datos$y,xlim=c(0,100),ylim=c(0,100),levels=.99) x_e <- dataEllipse(datos$x,datos$y,levels=.99)[][,1] y_e <- dataEllipse(datos$x,datos$y,levels=.99)[][,2] dfellipse <- data.frame( x = x_e, y = y_e) ggplot() + geom_point( data = datos, aes( x= datos$x, y = datos$y)) + geom_polygon(data = dfellipse, aes( x = x_e, y = y_e), col=''salmon'', alpha=0.25) Daniel Merino El 7 de marzo de 2013 15:32, Jorge Ayuso Rejas <jayusor@gmail.com> escribió:> Buenas tardes, > > Estoy intentando mejorar un gráfico que construyo pero de manera "bruta" y > quiere encontrar una manera más eficiente. > El gráfico en cuestión tiene más partes pero para simplificar la parte que > me interesa es esta: > > [image: Imágenes integradas 5] > > Esto es una elipse de confianza de unos puntos, la elipse la consigo > ayudándome de dataEllipse (paquete car), para llegar a este gráfico lo > hago de la siguiente manera: > > -Construyo una función que me dice si un punto (x,y) está dentro o no de > la elipse. > > -Hago un mallado de 100x100 (en pasos de 0,125) y miro si estoy dentro de > la elipse o no (*Esto es lo que quiere evitar) *(podría hacer el mallado > solo desde el rectángulo que envuelve la elipse pero quiero conseguir algo > mejor) > > -Voy recorriendo el eje x y me quedo con el valor de y en "FUERA" antes > de "DENTRO" y el "FUERA" después de "DENTRO" y así poder construir el > gráfico anterior que está construido en trozos, si pongo colores: > > [image: Imágenes integradas 4] > > Alguien tiene alguna sugerencia de como conseguir esto pero sin tener que > hacer un mallado, con geom_path puedo dibujar la elipse pero no se hacer lo > que quiero. > > Adjunto un código reproducible con lo que tengo (en el código hay algunos > for que supongo que se podrían juntar pero lo que realmente hace lento el > proceso es la sentencia apply(malla[,1:2],1,cual) que es lo que quiero > evitar) > > Muchas gracias y saludos. > > > > > -- > Jorge Ayuso Rejas > > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > >-- Daniel [[alternative HTML version deleted]]
Gracias Daniel, Quiero justo lo contrario, osea pintar el exterior de la elipse. Muchas gracias! El 7 de marzo de 2013 21:37, daniel <daniel319@gmail.com> escribió:> No se si entendí lo que quieres, pero no entendí porque usas geom_area, > para pintar el interior de geom_path me parece mejor usar geom_polygon. > Fijate si algo asi te ayuda: > > rm(list=ls()) > set.seed(12345) > library(ggplot2) > library(car) > library(fields) > library(memisc) > > datos<-data.frame(x=rnorm(20,60,15),y=rnorm(20,90,2)) > dataEllipse(datos$x,datos$y,xlim=c(0,100),ylim=c(0,100),levels=.99) > > x_e <- dataEllipse(datos$x,datos$y,levels=.99)[][,1] > y_e <- dataEllipse(datos$x,datos$y,levels=.99)[][,2] > dfellipse <- data.frame( x = x_e, y = y_e) > ggplot() + geom_point( data = datos, aes( x= datos$x, y = datos$y)) + > geom_polygon(data = dfellipse, aes( x = x_e, y = y_e), col=''salmon'', > alpha=0.25) > > > Daniel Merino > > > > El 7 de marzo de 2013 15:32, Jorge Ayuso Rejas <jayusor@gmail.com>escribió: > >> Buenas tardes, >> >> Estoy intentando mejorar un gráfico que construyo pero de manera "bruta" >> y quiere encontrar una manera más eficiente. >> El gráfico en cuestión tiene más partes pero para simplificar la parte >> que me interesa es esta: >> >> [image: Imágenes integradas 5] >> >> Esto es una elipse de confianza de unos puntos, la elipse la consigo >> ayudándome de dataEllipse (paquete car), para llegar a este gráfico lo >> hago de la siguiente manera: >> >> -Construyo una función que me dice si un punto (x,y) está dentro o no de >> la elipse. >> >> -Hago un mallado de 100x100 (en pasos de 0,125) y miro si estoy dentro de >> la elipse o no (*Esto es lo que quiere evitar) *(podría hacer el mallado >> solo desde el rectángulo que envuelve la elipse pero quiero conseguir algo >> mejor) >> >> -Voy recorriendo el eje x y me quedo con el valor de y en "FUERA" antes >> de "DENTRO" y el "FUERA" después de "DENTRO" y así poder construir el >> gráfico anterior que está construido en trozos, si pongo colores: >> >> [image: Imágenes integradas 4] >> >> Alguien tiene alguna sugerencia de como conseguir esto pero sin tener que >> hacer un mallado, con geom_path puedo dibujar la elipse pero no se hacer lo >> que quiero. >> >> Adjunto un código reproducible con lo que tengo (en el código hay >> algunos for que supongo que se podrían juntar pero lo que realmente hace >> lento el proceso es la sentencia apply(malla[,1:2],1,cual) que es lo que >> quiero evitar) >> >> Muchas gracias y saludos. >> >> >> >> >> -- >> Jorge Ayuso Rejas >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es@r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> > > > -- > Daniel >-- Jorge Ayuso Rejas [[alternative HTML version deleted]]
¿Te sirve usar un color en el background? + theme(panel.background = element_rect(colour = "pink")) y dentro de la ellipse usas el color de theme_classic (creo que es este el de fondo gris pero no estoy seguro). Daniel Merino Al grafico que te envie antes le pondria tambien xlim y ylim para que la ellipse tenga mejor forma de ellipse. El 7 de marzo de 2013 17:59, Jorge Ayuso Rejas <jayusor@gmail.com> escribió:> Gracias Daniel, > > Quiero justo lo contrario, osea pintar el exterior de la elipse. > > Muchas gracias! > > > El 7 de marzo de 2013 21:37, daniel <daniel319@gmail.com> escribió: > > No se si entendí lo que quieres, pero no entendí porque usas geom_area, >> para pintar el interior de geom_path me parece mejor usar geom_polygon. >> Fijate si algo asi te ayuda: >> >> rm(list=ls()) >> set.seed(12345) >> library(ggplot2) >> library(car) >> library(fields) >> library(memisc) >> >> datos<-data.frame(x=rnorm(20,60,15),y=rnorm(20,90,2)) >> dataEllipse(datos$x,datos$y,xlim=c(0,100),ylim=c(0,100),levels=.99) >> >> x_e <- dataEllipse(datos$x,datos$y,levels=.99)[][,1] >> y_e <- dataEllipse(datos$x,datos$y,levels=.99)[][,2] >> dfellipse <- data.frame( x = x_e, y = y_e) >> ggplot() + geom_point( data = datos, aes( x= datos$x, y = datos$y)) + >> geom_polygon(data = dfellipse, aes( x = x_e, y = y_e), col=''salmon'', >> alpha=0.25) >> >> >> Daniel Merino >> >> >> >> El 7 de marzo de 2013 15:32, Jorge Ayuso Rejas <jayusor@gmail.com>escribió: >> >>> Buenas tardes, >>> >>> Estoy intentando mejorar un gráfico que construyo pero de manera "bruta" >>> y quiere encontrar una manera más eficiente. >>> El gráfico en cuestión tiene más partes pero para simplificar la parte >>> que me interesa es esta: >>> >>> [image: Imágenes integradas 5] >>> >>> Esto es una elipse de confianza de unos puntos, la elipse la consigo >>> ayudándome de dataEllipse (paquete car), para llegar a este gráfico lo >>> hago de la siguiente manera: >>> >>> -Construyo una función que me dice si un punto (x,y) está dentro o no de >>> la elipse. >>> >>> -Hago un mallado de 100x100 (en pasos de 0,125) y miro si estoy dentro >>> de la elipse o no (*Esto es lo que quiere evitar) *(podría hacer el >>> mallado solo desde el rectángulo que envuelve la elipse pero quiero >>> conseguir algo mejor) >>> >>> -Voy recorriendo el eje x y me quedo con el valor de y en "FUERA" antes >>> de "DENTRO" y el "FUERA" después de "DENTRO" y así poder construir el >>> gráfico anterior que está construido en trozos, si pongo colores: >>> >>> [image: Imágenes integradas 4] >>> >>> Alguien tiene alguna sugerencia de como conseguir esto pero sin tener >>> que hacer un mallado, con geom_path puedo dibujar la elipse pero no se >>> hacer lo que quiero. >>> >>> Adjunto un código reproducible con lo que tengo (en el código hay >>> algunos for que supongo que se podrían juntar pero lo que realmente hace >>> lento el proceso es la sentencia apply(malla[,1:2],1,cual) que es lo que >>> quiero evitar) >>> >>> Muchas gracias y saludos. >>> >>> >>> >>> >>> -- >>> Jorge Ayuso Rejas >>> >>> _______________________________________________ >>> R-help-es mailing list >>> R-help-es@r-project.org >>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>> >>> >> >> >> -- >> Daniel >> > > > > -- > Jorge Ayuso Rejas >-- Daniel [[alternative HTML version deleted]]