¿Cómo añado un polígono nítido alrededor de un grupo de puntos en un gráfico de dispersión? Estoy usando ggplot2 pero estoy decepcionado con los resultados de geom_polygon
.
El conjunto de datos es por ahí como un archivo de texto delimitado por tabulaciones. El gráfico siguiente muestra dos medidas de las actitudes hacia la salud y el desempleo en un grupo de países:
Me gustaría cambiar de geom_density2d
a la menos elegante pero empíricamente más correcta geom_polygon
. El resultado de los datos no clasificados no es útil:
¿Cómo dibujo polígonos "limpios" que se comportan como caminos de contorno alrededor de los valores min-max y-x? Intenté ordenar los datos sin éxito.
Código:
print(fig2 <- ggplot(d, aes(man, eff, colour=issue, fill=issue)) +
geom_point() + geom_density2d(alpha=.5) + labs(x = "Efficiency", y = "Mandate"))
El d
El objeto se obtiene con este archivo CSV .
Solución:
Gracias a Wayne , Andy W y otros para sus indicaciones! Los datos, el código y los gráficos han sido enviado a GitHub . El resultado se ve así:
6 votos
El término que podría estar buscando es el casco convexo de los puntos (o potencialmente del casco alfa). Usted debe ser capaz de encontrar una función de R para calcular estos y luego ser capaz de añadir como capas a la trama.
0 votos
Gracias por señalar la terminología correcta. He fallado en el uso de
?chull
conggplot2
hasta ahora. No estoy seguro de estar codificando bien, y espero que alguien lo haya hecho ya.0 votos
¿Podría añadir su código R a la pregunta?
0 votos
Una cosa que hay que tener en cuenta: lo que estás mostrando son los máximos, que pueden ser "valores atípicos". Creo que el paquete R
alphahull
funciona de forma similar a la búsqueda del casco convexo, pero permite ajustarlo hacia dentro/hacia fuera para intentar hacer algo parecido a los intervalos de confianza.0 votos
@Wayne, un casco alfa no es un intervalo de confianza (de ninguna manera imaginable). Véase esta pregunta de gis.se para una breve descripción y algunas referencias de lo que es un casco alfa. Tal vez esté pensando en elipses de confianza bivariadas, o incluso en bagplots (boxplots bivariados para identificar valores atípicos).
0 votos
Si se observa el gráfico final con un casco alfa, es poco probable que cambie la interpretación general, aunque todos los polígonos serán ligeramente más pequeños y el desempleo estará más obviamente separado de la sanidad y las pensiones. Estoy menos familiarizado con las elipses de confianza bivariadas en tal situación, pero sospecho que tendrían un aspecto y una interpretación similares a los del gráfico de contorno original publicado (aunque limitados a ser elipses más regulares en todas las aplicaciones que he visto).
0 votos
@Andy W: Ah, vale. He utilizado el paquete una vez y me dio la impresión de que podía encoger el casco convexo de una manera que podría evitar los valores atípicos. Como señalas, las elipses de confianza bivariadas serían probablemente lo que P. querría en realidad. El problema general es que un casco convexo incluirá alegremente los valores atípicos por muy extremos que sean y, por tanto, podría ser engañoso si no se trata de alguna manera (quizás un paso de preprocesamiento, quizás en el paso de graficación).
0 votos
@Wayne, El casco alfa incluiría también cualquier valor atípico. Reduce el área total del polígono, pero en realidad hace que el anillo exterior del polígono sea más detallado e incluya más puntos como vértices en el anillo poligonal. Todos los mismos vértices del polígono para el casco convexo se incluirían en el casco alfa.