在 R 中的 spplot 顶部绘制饼图

Plot a pie-chart on top of a spplot in R

我想在我设法绘制的网格数据之上绘制饼图。

数据:

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

在 post 之后:R plot grid value on maps,我使用 spplot 绘制数据:

gridded(nasa) <- c("Lon","Lat")
spplot(nasa, "Ann")

我一直在尝试几个函数来在图的顶部绘制饼图,但还没有成功:

如果我在绘制地图后使用 floating.pie 函数,则会出现错误。

floating.pie(5,2, c(3,2,5,1), radius=1)  
Error in polygon(xc, yc, col = col[i], ...) : 
  plot.new has not been called yet   

在绘制空图后使用par(new=TRUE),可以绘制饼图,但坐标基于新图。

有没有办法在 spplot 上绘制饼图?

我检查了pieSP,但也无法绘制它。

您可以使用 ggplot2 创建饼图并使用 grid.arrange

library(gridExtra)
library(ggplot2)

#creating the pie.chart (random data)
df <- data.frame(
  group = c("Male", "Female", "Child"),
  value = c(25, 25, 50)
  )

bp <- ggplot(df, aes(x="", y=value, fill=group)) +
geom_bar(width = 1, stat = "identity")

pie <- bp + coord_polar("y", start=0)

然后,创建 ssplot

gridded(nasa) <- c("Lon","Lat")
plot1 <- spplot(nasa, "Ann")

最后,两个地块

grid.arrange(pie, plot2, nrow=2)

我不会删除其他答案,因为它可以帮助别人。

但我们可以试试这个(难看的饼图)。 在此选项中,您不能使用 ggplot2(至少我不知道如何使用)

library(lattice)
library(gridBase)
library(grid) 


plot.new()
pushViewport(viewport())
plot1
pushViewport(viewport(x=.5,y=.5,width=.15,height=.15))    #this will change position of pie
#grid.rect()
par(plt = gridPLT(), new=TRUE)
pie(c(25, 25, 50))             # I've tried push "pie" like did with "plot1" but it doesn't work

grid.rect() 将在您的饼图外部绘制一个框。 希望有用