我想在我设法绘制的网格数据上绘制一个饼图。
数据:
nasafile <- "http://eosweb.larc.nasa.gov/sse/global/text/global_radiation"
nasa <- read.table(file=nasafile, skip=13, header=TRUE)
关注此帖子: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
,但无法设法绘制它。
答案 0 :(得分:1)
我不会删除其他答案,因为它可以帮助某人。
但我们可以试试这个(丑陋的饼图)。 在此选项中,您无法使用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()
将在饼图外部绘制一个框。
我希望它有效
答案 1 :(得分:0)
您可以使用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)