我有一個有許多重疊點(從2-10)的情節。將抖動添加到點使其非常嘈雜和不吸引人。我喜歡在美學中添加一個阿爾法。不過,我希望有一個圖例,讀者可以看到每個透明膠片有多少點重疊。有沒有這樣的方式?有沒有辦法爲ggplot的alpha添加圖例?
ggplot(data=mydata,aes(x=x,y=y)) + geom_point(size=3,shape=2,aes(alpha=1/3))
比方說,我使用上面的代碼。我將如何結合alpha的圖例?
我有一個有許多重疊點(從2-10)的情節。將抖動添加到點使其非常嘈雜和不吸引人。我喜歡在美學中添加一個阿爾法。不過,我希望有一個圖例,讀者可以看到每個透明膠片有多少點重疊。有沒有這樣的方式?有沒有辦法爲ggplot的alpha添加圖例?
ggplot(data=mydata,aes(x=x,y=y)) + geom_point(size=3,shape=2,aes(alpha=1/3))
比方說,我使用上面的代碼。我將如何結合alpha的圖例?
不完全是你想要的,但如何geom_hex()?
如果你不離散(bin)它,我認爲R需要計算重疊面積和重疊數(sp?)(它也取決於點的大小),這聽起來很難。
library(hexbin)
mydata <- data.frame(x = rnorm(100), y = rnorm(100))
ggplot(data=mydata,aes(x=x,y=y)) + geom_hex()
下面是如何僞造這個的一個例子。嘗試幾次,同時變化alpha
。
require(ggplot2)
n = 10000
alpha = 0.01
set.seed(12345)
data = data.frame(replicate(2, rnorm(n)))
dev.new(width=4, height=3)
p = qplot(X1, X2, data=data, alpha=alpha)
fake_scale = scale_alpha('# of overlapping pts', breaks=pretty(c(alpha, 1)), labels=as.character(pretty(c(alpha, 1))/alpha))
p + fake_scale
alpha = 0.1
alpha = 0.01
從其他的答案以暗示,好像你可能想bin中的XY點到獨特的值,然後總結每個xy座標箱的唯一值的數量。
從另一個答案使用假數據,
library(ggplot2)
library(dplyr)
library(magrittr)
n = 10000
set.seed(12345)
data = data.frame(replicate(2, rnorm(n)))
我的第一個小數位分檔,然後計算有多少是在每個箱
data2 <- data %>% mutate(
x = round(X1,1),
y = round(X2,1)
) %>%
group_by(x,y) %>%
tally() %>%
dplyr::filter(n<=10) %>%
mutate(transp = n/10)
我過濾掉了最大的垃圾箱僅用於說明目的。現在,transp
列有你想要的計算,你可以提供給alpha
,並得到它的傳說
data2 %>%
ggplot(aes(x=x,y=y)) +
geom_point(aes(alpha = as.factor(transp))) +
scale_alpha_discrete(
"Number of overlapping points",
labels = 1:10
)+
theme(legend.position = "bottom")
圖:
這不回答你的問題,但也許只是具有透明度的一點點抖動可能不會太嘈雜,但仍指示點的數量。 – Aniko 2010-07-01 19:25:57
您可以將數據獲取到GGobi中,並使用Brush工具覆蓋發生覆蓋的區域,從而導出顯示描述並使用'rggobi'和DescribeDisplay'包在R中播放。或相反亦然。 – aL3xa 2010-07-01 22:52:10