用 echatr 和 ggplot2 绘制甜甜圈图

Donut plot with echatr and ggplot2

我有以下数据,我需要制作一张类似于我在 tableau 中制作的图表

df<-data.frame(estado=c("Aprobado","Reprobado"),
               freq=c(551,7),
             porcentaje=c(0.99,1))

带有 echatr 的图表看起来像这样

df %>% 
    head() %>% 
    mutate(estado = row.names(.)) %>% 
    e_charts(estado) %>% 
    e_pie(freq, radius = c("50%", "70%")) %>% 
    e_title("Donut chart")

我不明白为什么我无法正确放置标签或标题。

用ggplot2我有以下方法

ggplot(df,aes(x=2,y=porcentaje, fill=estado))+
  geom_bar(stat = "identity",
           color="white")+
  geom_text(aes(label=percent(porcentaje/100)),
            position=position_stack(vjust=0.5),color="white",size=6)+
  coord_polar(theta = "y")+
  scale_fill_manual(values=c("salmon","steelblue"))+
  theme_void()+
  labs(title="Gráfico de Dona")+
  xlim(0.5,2.5)

我不喜欢这张图的外观,它的色调看起来很差而且不美观,我正在寻找与我在 Tableau 中所做的结果相似的结果,即使带有中心标签也是如此

希望有人能告诉我如何更好地做到这一点,以便它的阴影在两个代码中的任何一个中都是正确的。

您可以通过更改 scale_fill_manual() 中的 values 参数来更改颜色。

可以使用 annotate() 将文本放在中间,设置 x = -Infy = -Inf 会将其放在中间。

library(ggplot2)
library(scales)

df<-data.frame(estado=c("Aprobado","Reprobado"),
               freq=c(551,7),
               porcentaje=c(0.99,1))

ggplot(df,aes(x=2,y=porcentaje, fill=estado))+
  geom_bar(stat = "identity",
           color="white")+
  geom_text(aes(label=percent(porcentaje/100)),
            position=position_stack(vjust=0.5),color="white",size=6)+
  annotate(
    "text", x = -Inf, y = -Inf, label = paste0("Total\n", sum(df$freq))
  ) +
  coord_polar(theta = "y")+
  scale_fill_manual(values=c("#75A1C7","#F9A655"))+
  theme_void()+
  labs(title="Gráfico de Dona")+
  xlim(0.5,2.5)

reprex package (v2.0.1)

于 2022-05-23 创建