美丽的饼图与R

acruukt9  于 2023-05-04  发布在  其他
关注(0)|答案(6)|浏览(177)

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

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

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

with(mydata,pie(FR, labels=paste0(as.character(group), " ", FR, "%"), radius=1))

这很简单,但可以接受。
我怎样才能得到类似ggplot2或lattice的东西?
经过多次尝试和错误我得到了

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

它更加复杂和丑陋。不是应该很简单吗?ggplot书籍只给予了一些例子,并劝阻使用饼图。
格子更糟糕,你需要很多很多的线才能得到它的惊吓。
谁能帮我做一个简单的饼图?例如,类似。..

难道没有R包可以轻松地做到这一点,而不需要20行代码吗?

mzsu5hc0

mzsu5hc01#

为什么不是一个 * 方形 * 饼图?

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

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

如果您有多维信息,另一个选项可能是sunburstR。使用来自@rawr post的browsers数据,您可以执行以下操作:

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

您可以使用treemap(对于交互式版本,请尝试@timelyportfolio的d3treeRx 1 e1f1x)

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

您还可以使用sankey图(来自networkD3package

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)

pxyaymoc

pxyaymoc2#

这里有一些方便的提示:

来源:Dark Horse Analytics: Salvaging the Pie
(srsly tho,条形图有什么不好?)
注:我不知道黑马分析是做什么的。这只是我的去,反馅饼演示图像。

lc8prwob

lc8prwob3#

您可以尝试使用plotrix包中的pie3D()函数:

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)

lqfhib0f

lqfhib0f4#

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

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

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

ujv3wf0j

ujv3wf0j5#

是的,我已经创建了ggpie,以更好地创建馅饼(2D和3D),甜甜圈和玫瑰派图!
这是Vignette

w6lpcovy

w6lpcovy6#

rAmCharts4包对3D饼图有很好的支持。

library(rAmCharts4)

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

amPieChart(
  data = dat,
  category = "group",
  value    = "FR",
  threeD = TRUE,
  variableDepth = TRUE
)

相关问题