beautiful Pie Charts with R

前端 未结 4 1806
余生分开走
余生分开走 2020-12-07 13:34

Let\'s say I have this simple data:

 mydata <- data.frame(group=c(\"A\", \"B\", \"0\", \"AB\"), FR=c(20, 32, 32, 16))

If I want to creat

相关标签:
4条回答
  • 2020-12-07 14:01

    After a lot of trial and error, I have decided plotly works best:

    library(plotly)
    mydata <- data.frame(group=c("A", "B", "0", "AB"), FR=c(20, 32, 32, 16))
    
    q <- plot_ly(mydata, labels = ~group, values = ~FR, type = 'pie') %>%
      layout(title = "Title",          
             xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
             yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
    q
    
    

    This is a png, the original one in Rstudio is interactive when you hover over it.

    0 讨论(0)
  • 2020-12-07 14:04

    Why not a square pie chart ?

    devtools::install_github("hrbrmstr/waffle")
    library(waffle)
    
    mydata <- c(`A`=20, `B`=32, `0`=32, `AB`=16)
    waffle(mydata, title = "Yummy waffle pie!")
    


    If you have multiple dimensions of information, another option could be sunburstR. Using browsers data from @rawr post you could do:

    library(sunburstR)
    library(dplyr)
    library(tidyr)
    browsers %>%
      unite(bv, browser, version, sep = "-") %>%
      select(bv, share) %>%
      sunburst(., count = TRUE)
    

    You could use treemap (for an interactive version, try @timelyportfolio's d3treeR package)

    library(treemap)
    tm <- treemap(
      browsers,
      index=c("browser", "version"),
      vSize="share",
      vColor="share",
      type="value"
    )
    

    You could also use a sankey diagram (from the networkD3 package)

    library(networkD3)
    df <- browsers %>%
      mutate_each(funs(as.character), browser, version) %>%
      mutate(bn = group_indices_(., .dots = "browser"), 
             cn = max(bn) + row_number()) 
    
    links <- select(df, bn, cn, share)
    nodes <- data.frame(name = c("", sort(unique(df$browser)), df$version))
    
    sankeyNetwork(Links = links, Nodes = nodes, Source = "bn",
                  Target = "cn", Value = "share", NodeID = "name",
                  fontSize = 12, nodeWidth = 30)
    

    0 讨论(0)
  • 2020-12-07 14:12

    Some handy tips here:

    Source: Dark Horse Analytics: Salvaging the Pie

    (srsly tho, what's wrong with a bar chart?)

    NOTE: I have no idea what Dark Horse Analytics does. This is just my go-to, anti-pie demo image.

    0 讨论(0)
  • 2020-12-07 14:19

    You can try with the pie3D() function from the plotrix package:

    library(plotrix)
    pie3D(mydata$FR, labels = mydata$group, main = "An exploded 3D pie chart", explode=0.1, radius=.9, labelcex = 1.2,  start=0.7)
    

    0 讨论(0)
提交回复
热议问题