{"id":786,"date":"2025-08-02T18:43:03","date_gmt":"2025-08-02T18:43:03","guid":{"rendered":"https:\/\/agustincastro.es\/?p=786"},"modified":"2026-01-24T13:18:39","modified_gmt":"2026-01-24T13:18:39","slug":"como-anadir-graficos-marginales-en-r-con-ggextraggmarginal","status":"publish","type":"post","link":"https:\/\/agustincastro.es\/index.php\/2025\/08\/02\/como-anadir-graficos-marginales-en-r-con-ggextraggmarginal\/","title":{"rendered":"\ud83d\udccc C\u00f3mo a\u00f1adir gr\u00e1ficos marginales en R con ggExtra::ggMarginal"},"content":{"rendered":"\n<p>Los <strong>gr\u00e1ficos marginales <\/strong>permiten visualizar simult\u00e1neamente la relaci\u00f3n entre dos variables y la distribuci\u00f3n individual de cada una. Esto es especialmente \u00fatil porque:<\/p>\n\n\n\n<p><strong>Pueden ayudar a detectar patrones y anomal\u00edas<\/strong>: Mientras el <strong><em>scatterplot <\/em><\/strong>muestra c\u00f3mo se relacionan las variables, los gr\u00e1ficos marginales ofrecen m\u00e1s informaci\u00f3n y <strong>pueden revelar si alguna variable est\u00e1 sesgada, tiene m\u00faltiples picos (multimodal), o contiene valores at\u00edpicos<\/strong>.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Contextualizar la correlaci\u00f3n<\/strong>: A veces, dos variables pueden parecer relacionadas, pero sus distribuciones pueden indicar heterogeneidad o agrupamientos que un scatterplot solo no mostrar\u00eda.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Facilitar la interpretaci\u00f3n<\/strong>: Al ver las distribuciones marginales, los analistas pueden entender mejor el rango y concentraci\u00f3n de datos, mejorando la toma de decisiones basada en los gr\u00e1ficos.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Presentaci\u00f3n profesional<\/strong>: No hay que desde\u00f1ar el hecho de que a\u00f1adir gr\u00e1ficos marginales en reportes o presentaciones aporta claridad visual y un toque de sofisticaci\u00f3n que puede ser muy valorado en entornos acad\u00e9micos o empresariales.<\/li>\n<\/ul>\n\n\n\n<p>Librer\u00edas que vamos a utilizar en este ejemplo. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"319\" data-src=\"https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-1024x319.png\" alt=\"\" class=\"wp-image-788 lazyload\" data-srcset=\"https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-1024x319.png 1024w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-300x93.png 300w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-768x239.png 768w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image.png 1092w\" data-sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/319;\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>Creamos un <strong><em>dataset <\/em><\/strong>con dos 200 valores para cada variable, <strong>x<\/strong> e <strong>y<\/strong>. Para ello, utilizamos la funci\u00f3n <strong>rnorm <\/strong>de<strong> R <\/strong>(con el fin de <strong>generar n\u00fameros aleatorios que siguen una distribuci\u00f3n normal<\/strong> &#8212; tambi\u00e9n conocida como distribuci\u00f3n gaussiana o de campana&#8211;). Tras esto, con <strong>data.frame<\/strong> generamos la tabla de datos. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"756\" height=\"414\" data-src=\"https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-3.png\" alt=\"\" class=\"wp-image-789 lazyload\" data-srcset=\"https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-3.png 756w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-3-300x164.png 300w\" data-sizes=\"(max-width: 756px) 100vw, 756px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 756px; --smush-placeholder-aspect-ratio: 756\/414;\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>Para que ve\u00e1is la estructura de datos, con <strong>head(datos, 10)<\/strong> podemos ver las 10 primeras observaciones del data frame que acabamos de crear. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"502\" height=\"712\" data-src=\"https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-12.png\" alt=\"\" class=\"wp-image-791 lazyload\" data-srcset=\"https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-12.png 502w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-12-212x300.png 212w\" data-sizes=\"(max-width: 502px) 100vw, 502px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 502px; --smush-placeholder-aspect-ratio: 502\/712;\" \/><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<p>Ahora creamos el gr\u00e1fico de dispersi\u00f3n (<strong>scatterplot<\/strong>) con el siguiente c\u00f3digo, y lo mostramos. He a\u00f1adido <strong>geom_smooth(method = \u00ablm\u00bb)<\/strong> para mostrar tambi\u00e9n la l\u00ednea de tendencia. <\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"704\" height=\"638\" data-src=\"https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-16.png\" alt=\"\" class=\"wp-image-792 lazyload\" data-srcset=\"https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-16.png 704w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-16-300x272.png 300w\" data-sizes=\"(max-width: 704px) 100vw, 704px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 704px; --smush-placeholder-aspect-ratio: 704\/638;\" \/><\/figure>\n<\/div>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"465\" data-src=\"https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/no_marginal_plot-1024x465.jpg\" alt=\"\" class=\"wp-image-793 lazyload\" data-srcset=\"https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/no_marginal_plot-1024x465.jpg 1024w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/no_marginal_plot-300x136.jpg 300w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/no_marginal_plot-768x349.jpg 768w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/no_marginal_plot-1536x698.jpg 1536w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/no_marginal_plot-2048x931.jpg 2048w\" data-sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/465;\" \/><\/figure>\n\n\n\n<p>Ahora usamos la funci\u00f3n <strong>ggMarginal<\/strong> del paquete <strong>ggExtras<\/strong> para a\u00f1adir al gr\u00e1fico el densigrama \u00aben este caso\u00bb. Existe la posibilidad de a\u00f1adir otros tipos de gr\u00e1ficos marginales, como un histograma, boxplot, gr\u00e1ficos de viol\u00edn etc. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"575\" data-src=\"https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-18-1024x575.png\" alt=\"\" class=\"wp-image-795 lazyload\" data-srcset=\"https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-18-1024x575.png 1024w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-18-300x169.png 300w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-18-768x432.png 768w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-18-1536x863.png 1536w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-18-1280x720.png 1280w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/image-18.png 1598w\" data-sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/575;\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>El gr\u00e1fico resultante ser\u00eda el siguiente: <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"465\" data-src=\"https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/with_marginal_plot-1024x465.jpg\" alt=\"\" class=\"wp-image-796 lazyload\" data-srcset=\"https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/with_marginal_plot-1024x465.jpg 1024w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/with_marginal_plot-300x136.jpg 300w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/with_marginal_plot-768x349.jpg 768w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/with_marginal_plot-1536x698.jpg 1536w, https:\/\/agustincastro.es\/wp-content\/uploads\/2025\/08\/with_marginal_plot-2048x931.jpg 2048w\" data-sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/465;\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">\u270f\ufe0f Relaci\u00f3n entre X e Y (gr\u00e1fico de dispersi\u00f3n \/ scatterplot)<\/h3>\n\n\n\n<p>La <strong>variable x<\/strong> sigue una <strong>distribuci\u00f3n normal<\/strong> centrada en <strong>10 <\/strong>con una dispersi\u00f3n moderada (sd = standard deviation = <strong>2<\/strong>).<\/p>\n\n\n\n<p>La <strong>variable y<\/strong> es generada con media <strong>20<\/strong>, sd <strong>6<\/strong> y, posteriormente, sumando <strong>+ x<\/strong>. Por lo tanto, <strong>y<\/strong> est\u00e1 correlacionada positivamente con x, pero con bastante variabilidad vertical (por el ruido de sd = 6).<\/p>\n\n\n\n<p>As\u00ed, a medida que x aumenta, y tambi\u00e9n tiende a aumentar. Pero para un mismo valor de x, y puede tener un rango bastante amplio. Esto se observa gr\u00e1ficamente como una <strong>nube de puntos inclinada positivamente<\/strong>, pero <strong>dispersa<\/strong>.<\/p>\n\n\n\n<p>&#8211;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u270f\ufe0f Comentario sobre los gr\u00e1ficos marginales<\/h3>\n\n\n\n<p>\ud83d\udfe2 <strong>Distribuci\u00f3n marginal de x (arriba)<\/strong><\/p>\n\n\n\n<p>Tiene forma normal (sim\u00e9trica) centrada cerca de 10, con un ligero aplanamiento t\u00edpico de una muestra de tama\u00f1o 200. La curva es relativamente estrecha, reflejando la baja dispersi\u00f3n (sd = 2). Visualmente se ve una campana bien definida y concentrada. <\/p>\n\n\n\n<p>\ud83d\udfe2 <strong>Distribuci\u00f3n marginal de y (a la derecha)<\/strong><\/p>\n\n\n\n<p>Aunque y est\u00e1 influida por una distribuci\u00f3n normal (media 20, sd 6), al sumar x (media 10), su distribuci\u00f3n se desplaza hacia valores m\u00e1s altos. En la pr\u00e1ctica, y queda centrada aproximadamente alrededor de 30.<\/p>\n\n\n\n<p>La curva es m\u00e1s ancha y m\u00e1s aplanada, ya que la desviaci\u00f3n est\u00e1ndar combinada es considerable.<\/p>\n\n\n\n<p>Puedes ver una mayor dispersi\u00f3n horizontal: la densidad se reparte en un rango m\u00e1s amplio que x.<\/p>\n\n\n\n<p>&#8211;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u270f\ufe0f Interpretaci\u00f3n general<\/h3>\n\n\n\n<p>El gr\u00e1fico completo (dispersi\u00f3n + m\u00e1rgenes) muestra c\u00f3mo x y y est\u00e1n positivamente relacionados, pero con bastante variabilidad. <\/p>\n\n\n\n<p>Los gr\u00e1ficos marginales ayudan a entender:<\/p>\n\n\n\n<p>Que <strong>x est\u00e1 mucho m\u00e1s concentrado<\/strong> (menos disperso).<\/p>\n\n\n\n<p>Que <strong>y es m\u00e1s difuso, con valores m\u00e1s alejados de la media<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Los gr\u00e1ficos marginales permiten visualizar simult\u00e1neamente la relaci\u00f3n entre dos variables y la distribuci\u00f3n individual de cada una. Esto es especialmente \u00fatil porque: Pueden ayudar a detectar patrones y anomal\u00edas: Mientras el scatterplot muestra c\u00f3mo se relacionan las variables, los gr\u00e1ficos marginales ofrecen m\u00e1s informaci\u00f3n y pueden revelar si alguna variable est\u00e1 sesgada, tiene m\u00faltiples [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":787,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,5],"tags":[],"class_list":["post-786","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-r","category-tecnica-y-practica"],"_links":{"self":[{"href":"https:\/\/agustincastro.es\/index.php\/wp-json\/wp\/v2\/posts\/786","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/agustincastro.es\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/agustincastro.es\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/agustincastro.es\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/agustincastro.es\/index.php\/wp-json\/wp\/v2\/comments?post=786"}],"version-history":[{"count":9,"href":"https:\/\/agustincastro.es\/index.php\/wp-json\/wp\/v2\/posts\/786\/revisions"}],"predecessor-version":[{"id":806,"href":"https:\/\/agustincastro.es\/index.php\/wp-json\/wp\/v2\/posts\/786\/revisions\/806"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/agustincastro.es\/index.php\/wp-json\/wp\/v2\/media\/787"}],"wp:attachment":[{"href":"https:\/\/agustincastro.es\/index.php\/wp-json\/wp\/v2\/media?parent=786"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/agustincastro.es\/index.php\/wp-json\/wp\/v2\/categories?post=786"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/agustincastro.es\/index.php\/wp-json\/wp\/v2\/tags?post=786"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}