2017-01-27 6 views
0

У меня есть таблица с двумя категориальными значениями, и я хочу визуализировать их связь; количество раз, когда они находятся вместе в одной строке.Как сделать участок ассоциации в ggplot2?

Например, давайте рассмотрим этот кадр данных:

d <-data.frame(cbind(sample(1:5,100,replace=T), sample(1:10,100,replace=T))) 

Как может генерировать Heatmap так:

enter image description here

Где цвет квадратов представляют число раз, что X1 и X2 находятся в данной комбинации.

Было бы даже лучше знать, как построить это с помощью точечного графика, где размер точки представляет собой счетчик совпадений между X1 и X2.

Если вы можете вести меня, как это сделать на ggplot2 или любым другим способом в R, это было бы очень полезно.

Спасибо!

ответ

2

Вот как я бы это сделать:

library(ggplot2) 
library(dplyr) 
set.seed(123) 
d <-data.frame(x = sample(1:5,100,replace=T), y = sample(1:10,100,replace=T)) 
d_sum <- d %>% 
    group_by(x, y) %>% 
    summarise(count = n()) 

Для тепловой карты:

ggplot(d_sum, aes(x, y)) + 
    geom_tile(aes(fill = count)) 

enter image description here

Для dotplot:

ggplot(d_sum, aes(x, y)) + 
    geom_point(aes(size = count)) 

enter image description here

+0

Он работает абсолютно гладкая, это было именно то, что я прошу! – Geparada

2
library(ggplot2) 
library(dplyr) 
library(scales) 
set.seed(123) 
d <-data.frame(x = sample(1:20,1000,replace=T), y = sample(1:20,1000,replace=T)) 
d %>% count(x, y) %>% ggplot(aes(x, y, fill = n)) + 
    geom_tile() + 
    scale_x_continuous(breaks=1:20)+ 
    scale_y_continuous(breaks=1:20)+ 
    scale_fill_gradient2(low='white', mid='steelblue', high='red') + 
    guides(fill=guide_legend("Count")) + 
    theme(axis.text.x = element_text(angle = 90, hjust = 1)) + theme_bw() 

enter image description here