好了,作爲起點,這裏是一些示例數據。每個都是隨機的,一個移到(2,2)。
df1 <-
data.frame(
x = rnorm(1000)
, y = rnorm(1000)
)
df2 <-
data.frame(
x = rnorm(1000, 2)
, y = rnorm(1000, 2)
)
爲確保箱子完全相同,最好構建一個hexbin
對象。爲了達到這個目的,我使用dplyr
的bind_rows
來跟蹤數據來自哪個data.frame(如果您有一個帶有分組變量的單個data.frame,這會更容易)。
bothDF <-
bind_rows(A = df1, B = df2, .id = "df")
bothHex <-
hexbin(x = bothDF$x
, y = bothDF$y
, IDs = TRUE
)
接下來,我們使用的hexbin
和dplyr
組合,以計算每個每個單元內的發生。首先,在整個箱子上應用,構建一個表格(需要使用factor
來確保所有層次都顯示;如果您的專欄已經是一個因素,則不需要)。然後,它簡化它並構造一個數據框架,然後用mutate
來處理計算差異,然後再回到一個表格,該表格給出每個id的x和y值。
counts <-
hexTapply(bothHex, factor(bothDF$df), table) %>%
simplify2array %>%
t %>%
data.frame() %>%
mutate(id = as.numeric(row.names(.))
, diff = A - B) %>%
left_join(data.frame(id = [email protected], hcell2xy(bothHex)))
head(counts)
給出:
A B id diff x y
1 1 0 7 1 -1.3794467 -3.687014
2 1 0 71 1 -0.8149939 -3.178209
3 1 0 79 1 1.4428172 -3.178209
4 1 0 99 1 -1.5205599 -2.923806
5 2 0 105 2 0.1727985 -2.923806
6 1 0 107 1 0.7372513 -2.923806
最後,我們使用ggplot2
繪製得到的數據,因爲它提供了更多的控制權(以及更容易地使用不同的變量不是算作填充能力)比hexbin
本身。
counts %>%
ggplot(aes(x = x, y = y
, fill = diff)) +
geom_hex(stat = "identity") +
coord_equal() +
scale_fill_gradient2()
從那裏,很容易玩斧頭,顏色等
您只創建了一個陰謀。閱讀構建模擬數據的示例,並將代碼添加到您的quesiton正文中,以生成兩個類似於您正在使用的數據集。 –