這是與以前的帖子(ggplot hexbin shows different number of hexagons in plot versus data frame)稍有不同的問題。自動防止ggplot hexbin從軸切割幾何的方法
我正在使用hexbin()將數據存入六邊形對象,並使用ggplot()來繪製結果。我注意到,有時候,情節邊緣上的六角形被削減了一半。下面是一個例子。
library(hexbin)
library(ggplot2)
set.seed(1)
data <- data.frame(A=rnorm(100), B=rnorm(100), C=rnorm(100), D=rnorm(100), E=rnorm(100))
maxVal = max(abs(data))
maxRange = c(-1*maxVal, maxVal)
x = data[,c("A")]
y = data[,c("E")]
h <- hexbin(x=x, y=y, xbins=5, shape=1, IDs=TRUE, xbnds=maxRange, ybnds=maxRange)
hexdf <- data.frame (hcell2xy (h), hexID = [email protected], counts = [email protected])
ggplot(hexdf, aes(x = x, y = y, fill = counts, hexID = hexID)) +
geom_hex(stat = "identity") +
coord_cartesian(xlim = c(maxRange[1], maxRange[2]), ylim = c(maxRange[1], maxRange[2]))
這產生了一個六邊形頂部切斷,一個六邊形底部切斷圖形:
另一種方法,我可以嘗試是硬編碼值(這裏是1.5)加到x和y軸的極限上。這樣做似乎解決了這個問題,因爲沒有六邊形被切斷了。
ggplot(hexdf, aes(x = x, y = y, fill = counts, hexID = hexID)) +
geom_hex(stat = "identity") +
scale_x_continuous(limits = maxRange * 1.5) +
scale_y_continuous(limits = maxRange * 1.5)
然而,即使該第二種方法在這種情況下解決問題,1.5的值是任意的。我正在嘗試將這個過程自動化爲各種數據,並且可以使用各種容器大小和六邊形尺寸。是否有解決方案讓所有六邊形在劇情中完全可見,而不必硬編碼任何可能對某些實例來說太大或太小的值?
剛纔編輯的答案包括手動設置垃圾桶數量而不是垃圾桶寬度的可能性 – lbusett