2017-09-04 50 views
1

我正在開發一個模擬失蹤船隻移動的項目。顯示圖形中每點的計數(統計)

library("ggplot2") 

a <- rnorm(1000, 30.2, 2) 
b <- rnorm(1000, 10, 5) 
y <- (x + a + b) * 0.6 

df <- data.frame(x,y) 
p <- ggplot(df,aes(x=x,y=y)) + 
    ggtitle("A Priori Map") + xlab("Longtitude") + ylab("Latitude") + 
    scale_fill_gradientn(colors = topo.colors(10)) 

p + stat_binhex(show.legend = T, bins = 20) 

這將產生一個地圖是這樣的:我已經使用這個代碼做了一個分佈圖

A hexbin map

然而,而不是出了使用顏色數的數量,我想以顯示一個點的實際計數。所以如果程序「登陸」某個點3次,它會顯示'3'。

這怎麼能在R中完成?

+0

有沒有在您的樣本數據中沒有'x'。 – eipi10

回答

5

以下是如何計數添加到現有的圖形:

library(ggplot2) 
theme_set(theme_bw()) 

set.seed(2) 
a <- rnorm(1000, 30.2, 2) 
b <- rnorm(1000, 10, 5) 
x = rnorm(1000) 
y <- (x + a + b) * 0.6 

df <- data.frame(x,y) 

p <- ggplot(df,aes(x=x,y=y)) + 
    ggtitle("A Priori Map") + 
    xlab("Longtitude") + ylab("Latitude") + 
    scale_fill_gradientn(colors = topo.colors(10)) + 
    stat_binhex(show.legend = T, bins = 20) 

p + geom_text(stat="binhex", bins=20, aes(label=..count..), show.legend=FALSE, 
       colour=hcl(15,100,60), fontface="bold", size=3.5) 

enter image description here

要取出填充顏色,你可以這樣做:

ggplot(df,aes(x=x,y=y)) + 
    ggtitle("A Priori Map") + 
    xlab("Longtitude") + ylab("Latitude") + 
    stat_binhex(bins = 20, fill=NA, colour="black") + 
    geom_text(stat="binhex", bins=20, aes(label=..count..), colour="red") 

enter image description here

你可以也使用文字大小來突出顯示該區域密度最高的S:

ggplot(df,aes(x=x,y=y)) + 
    ggtitle("A Priori Map") + 
    xlab("Longtitude") + ylab("Latitude") + 
    stat_binhex(show.legend = T, bins = 20, fill=NA, colour="grey70") + 
    geom_text(stat="binhex", bins=20, aes(label=..count.., size=..count..), colour="red") + 
    scale_size_continuous(range=c(3,6)) + 
    guides(size=FALSE) 

enter image description here

這也是作品,未經六角格:

ggplot(df,aes(x=x,y=y)) + 
    ggtitle("A Priori Map") + 
    xlab("Longtitude") + ylab("Latitude") + 
    geom_text(stat="binhex", bins=20, aes(label=..count.., size=..count..), colour="red") + 
    scale_size_continuous(range=c(3,6)) + 
    guides(size=FALSE) 

enter image description here

+0

正是我需要和更多。感謝您的幫助! – RedGreenBlue

+0

如果這符合您的需求,請考慮點擊「接受答案」複選標記。 – eipi10