2017-08-04 252 views
0

我想在geom_tile圖上使用geom_scatterpie繪製餅圖。不過,我得到一個錯誤:在geom_tile圖上繪製geom_scatterpie

Error: Discrete value supplied to continuous scale

下面是簡單的代碼,我不能去上班:

library(ggplot2) 
library(scatterpie) 

nasafile <- "http://eosweb.larc.nasa.gov/sse/global/text/global_radiation" 
nasa <- read.table(file=nasafile, skip=13, header=TRUE) 

p <- ggplot(aes(y = Lat , x = Lon), data = nasa)+ 
     geom_tile(aes(fill=Ann)) + 
     scale_fill_gradientn(colours=brewer.pal('YlOrRd', n=9)) + 
     theme_bw() + 
     coord_equal() 
plot(p) 

這工作,但如果我在此之上添加geom_scatterpie

首先爲餅圖中的數據繪製:

d <- data.frame(x=rnorm(5), y=rnorm(5)) 
d$A <- abs(rnorm(5, sd=1)) 
d$B <- abs(rnorm(5, sd=2)) 
d$C <- abs(rnorm(5, sd=3)) 

但我得到的錯誤,當我這樣做:

p + geom_scatterpie(aes(x=x, y=y), data=d, cols=c("A", "B", "C")) + coord_fixed() 

回答

2

的問題是,你的geom_tile採用連續填充縮放而geom_scatterpie使用離散填充縮放。如果您將Ann更改爲某個因素,它會起作用。不理想,但這個工程:

nasa$Ann <- as.factor(as.integer(nasa$Ann)) 
mypalette <- brewer.pal(9, "YlOrRd") # 6 for geom_tile, 3 for geom_scatterpie 
p <- ggplot(aes(y = Lat , x = Lon), data = nasa)+ 
    geom_tile(aes(fill=Ann)) + 
    scale_fill_manual(values = mypalette) + 
    theme_bw() + 
    coord_equal() 
p 

d <- data.frame(x=rnorm(5, 0, 50), y=rnorm(5, 0, 30)) # larger sd 
d$A <- abs(rnorm(5, sd=1)) 
d$B <- abs(rnorm(5, sd=2)) 
d$C <- abs(rnorm(5, sd=3)) 

p + geom_scatterpie(aes(x=x, y=y, r = 20), data=d, cols=c("A", "B", "C")) #larger radius 

或者,使用的size=代替fill=(沒有geom_scatterpie):

p <- ggplot(aes(y = Lat , x = Lon), data = nasa)+ 
    geom_tile(aes(fill=Ann)) + 
    scale_fill_gradientn(colours=brewer.pal('YlOrRd', n=9)) + 
    theme_bw() + 
    coord_equal() 
p 

d <- data.frame(Lon = c(-100, 0, 100), 
       Lat = c(-50, 0, 50), 
       genvar = c(.1, .3, .5)) 

p + geom_point(data = d, aes(x = Lon, y = Lat, size = genvar), 
       color = "white") 
+0

感謝您的回答。情節失去了它的決議,但我認爲它回答瞭如何在這裏使用geom_scatterpie的問題。如果你知道更好的方式來繪製這幅地圖,包括餅圖,你會介意發佈這個問題嗎?再次感謝。 – GabrielMontenegro

+0

老實說,我喜歡你的地圖的高分辨率版本,不喜歡散佈。你想添加的數據的性質是什麼? – jtr13

+0

它是來自世界不同人羣的遺傳變異的頻率。我想重現這個數字:http://journals.plos.org/plosgenetics/article?id=10.1371/journal.pgen.0040032 – GabrielMontenegro