R: Объединение двух контурных графиков вместе

#r #ggplot2 #data-visualization

#r #ggplot2 #Визуализация данных

Вопрос:

Я работаю с языком программирования R. Я сделал два следующих графика:

 library(ggplot2)
library(cowplot)

data_1 = data.frame(a = rnorm(100,10,10), b = rnorm(100,10,10), c = as.factor("one"))


data_2 = data.frame(a = rnorm(100,10,10), b = rnorm(100,10,10), c = as.factor("two"))


p1 = ggplot(data_1, aes(x = a, y = 
          b))  
        geom_density_2d_filled()   
        ggtitle("Plot 1")

p2 = ggplot(data_2, aes(x = a, y = 
          b))  
        geom_density_2d_filled()   
        ggtitle("Plot 2")

plot_grid(p1, p2)
 

введите описание изображения здесь

Мой вопрос: есть ли способ объединить оба этих графика в один график, чтобы он не выглядел «слишком грязным»?

Я попробовал следующий код:

 ggplot(final, aes(x = a, y = 
                      b, colour = c))  
    geom_density_2d_filled()   
    ggtitle("Combined")
 

введите описание изображения здесь

Но это очень трудно читать.

Кто-нибудь знает, как это можно сделать?

Спасибо!

Комментарии:

1. Вы имеете в виду объединение только легенды или дистрибутивов?

2. @ Mael: Спасибо за ваш ответ! Можно ли объединить легенды? Я не уверен, как это сделать — я ищу способ, чтобы кто-то знал, что это два разных графика двух разных видов (например, рост / вес слонов против тигров)

3. data_2 = data.frame(a = rnorm(100,10,10), b = rnorm(100,10,10), c = as.фактор («два»)) это можно изменить на data_2 = data.frame(a = rnorm(100,100,10), b = rnorm(100,100,10), c = as.фактор («два»)) так что это выглядит более очевидным

4. Я думаю, у вас есть несколько вариантов, чтобы сделать его более читаемым. Вы можете удалить legend ( show.legend = F ) в geom_density_2d_filled функции, если это не очень важно. Объединение обоих графиков может быть не очень хорошим вариантом, потому что они в значительной степени находятся в одном и том же месте, поэтому они перекрываются

5. Что именно означает «слишком грязный»? Как вы оцениваете «трудность чтения»? Если вам нужны общие рекомендации по визуализации данных, это больше по теме для перекрестной проверки . На данный момент это не похоже на конкретный вопрос программирования, не основанный на мнениях.

Ответ №1:

Вы имеете в виду sth. нравится это? Здесь контурный график используется для перекрытия нескольких плотностей 2d-ядра:

 library(ggplot2)
library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union

set.seed(1337)
data_1 = data.frame(a = rnorm(100,10,10), b = rnorm(100,10,10), c = as.factor("one"))
data_2 = data.frame(a = rnorm(100,10,10), b = rnorm(100,10,10), c = as.factor("two"))

bind_rows(
  data_1,
  data_2
) %>%
  ggplot(aes(a, b, color = c))  
    geom_density2d()
 

Создано 2021-12-07 пакетом reprex (v2.0.1)