在 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()
将在您的饼图外部绘制一个框。
希望有用
我想在我设法绘制的网格数据之上绘制饼图。
数据:
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()
将在您的饼图外部绘制一个框。
希望有用