2017-08-04 18 views
0

geom_tileプロットの上にgeom_scatterpieを使用して円グラフをプロットしたいとします。しかし、私はエラーを取得しています:geom_tileプロットにgeom_scatterpieをプロット

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を追加した場合::

Error: Discrete value supplied to continuous scale

ここで私は仕事に行くことができない簡単なコードです

プロットへの円グラフのための第一のデータ:

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_scatterpieが離散フィルスケールを使用しながら、あなたのgeom_tileが連続フィルスケールを使用していることです。 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

関連する問題