【问题标题】:Plot a pie-chart on top of a spplot in R在 R 中的 spplot 上绘制饼图
【发布时间】:2018-01-17 14:26:28
【问题描述】:

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

数据:

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,但也无法绘制它。

【问题讨论】:

    标签: r plot pie-chart sp


    【解决方案1】:

    您可以使用 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)
    

    【讨论】:

    • 谢谢。我的意思是在地图的顶部。说在非洲之上。
    【解决方案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() 将在您的饼图外部绘制一个框。 我希望它有效

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      • 1970-01-01
      • 2022-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多