美丽的饼图与R

ska*_*kan 11 r ggplot2 lattice pie-chart

假设我有这个简单的数据:

 mydata <- data.frame(group=c("A", "B", "0", "AB"), FR=c(20, 32, 32, 16))
Run Code Online (Sandbox Code Playgroud)

如果我想从这个数据帧创建一个饼图,我可以这样做:

 with(mydata,pie(FR, labels=paste0(as.character(group), " ", FR, "%"), radius=1))
Run Code Online (Sandbox Code Playgroud)

基本馅饼

这很简单但可以接受.

我怎样才能得到与ggplot2或格子类似的东西?

经过多次试验和错误,我得到了

ggplot(mydata, aes(x = factor(1), y=FR,fill=factor(group)) ) + geom_bar(width = 1,stat="identity")+coord_polar(theta = "y") 
Run Code Online (Sandbox Code Playgroud)

ggplot

它更加复杂和丑陋.难道不是很容易吗?ggplot书籍只提供一些例子,并且不鼓励使用饼图.

莱迪思更糟糕的是,你需要很多线才能让它变得吓人.

请问有人能帮助我获得一个漂亮而简单的饼图吗?例如......

例1

例题

没有任何R包能够轻松完成,没有20行代码吗?

Ste*_*pré 40

为什么不是方形饼图?

devtools::install_github("hrbrmstr/waffle")
library(waffle)

mydata <- c(`A`=20, `B`=32, `0`=32, `AB`=16)
waffle(mydata, title = "Yummy waffle pie!")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


如果您有多个维度的信息,另一个选项可能是sunburstR.使用browsers来自@rawr 帖子的数据你可以做到:

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

在此输入图像描述

您可以使用treemap(对于交互式版本,请尝试@afterportfolio的d3treeR )

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

在此输入图像描述

你也可以使用一个sankey图(从networkD3 包中)

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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 这两个地块都很棒@Steven Beaupre (3认同)

hrb*_*str 40

这里有一些方便的提示:

来源:黑马分析:拯救馅饼

(srsly tho,条形图有什么问题?)

注意:我不知道Dark Horse Analytics的功能.这只是我的首选反饼演示图像.


RHe*_*tel 13

您可以尝试使用包中的pie3D()功能plotrix:

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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 如果只有一些C4可以实际爆炸饼图:-) (12认同)
  • C4是一个[强大的爆炸性](https://en.wikipedia.org/wiki/C-4_%28explosive%29). (3认同)
  • 你能解释一下什么是C4吗? (2认同)

Nin*_*gen 5

经过大量的试验和错误,我决定情节效果最好:

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

Run Code Online (Sandbox Code Playgroud)

这是一张 png,Rstudio 中的原始图片当您将鼠标悬停在它上面时是交互式的。

情节示例