【问题标题】:labeling pie chart issue with ggplot2 (and chage grom text to label)用ggplot2标记饼图问题(并从文本更改为标签)
【发布时间】:2020-09-02 22:04:36
【问题描述】:

我有以下问题:我无法在 R 中使用 ggplot2 在饼图上正确添加标签。

这是代码:

establecimientos <- c("A", "A","A","D","D","D","D","D","D","F","F","F","F","F","F","F","F","F","F","F","F","F","E","E","E","E","E","E","E","G","G","G","G","G","Y","Y","A","A","A","A","A","A","B","B")


pestab <- data.frame(establecimientos) %>% 
  group_by(establecimientos) %>% 
  mutate(cnt = n(),
         pct = percent(cnt / nrow(.), accuracy = 1)) %>%
  unique %>% ungroup %>% 
  mutate(place = cumsum(cnt) - cnt/2) %>% 
  ggplot(data = ., 
         aes(x = factor(1), weight = cnt, fill = factor(establecimientos))) + 
  geom_bar(position = "stack") +
  scale_y_continuous(breaks = seq(0, length(establecimientos), length(establecimientos)/4), 
                     labels = c("0", "25%", "50%", "75%", "100%")) + 
  coord_polar(theta='y') +
  geom_text(aes(x = 1.3, y = place, label = pct)) +
  theme(axis.text.y = element_blank(), 
        axis.title.y = element_blank(), 
        axis.ticks.y = element_blank(),
        axis.title.x = element_blank()) +
  labs(fill = "Establecimientos")

pestab

这就是产品=s

另外,我想从 geom_text 更改为 geom_label 但我不知道该怎么做。

感谢您的帮助。

【问题讨论】:

    标签: r ggplot2 pie-chart


    【解决方案1】:

    我建议下一个方法:

    library(tidyverse)
    #Data 1
    establecimientos <- c("A", "A","A","D","D","D","D","D","D","F","F","F","F","F","F","F","F","F","F","F","F","F","E","E","E","E","E","E","E","G","G","G","G","G","Y","Y","A","A","A","A","A","A","B","B")
    #Data 2
    df1 <- pestab <- data.frame(establecimientos) %>% 
      group_by(establecimientos) %>% 
      mutate(cnt = n(),
             pct = percent(cnt / nrow(.), accuracy = 1)) %>%
      unique %>% ungroup %>% 
      mutate(place = cumsum(cnt) - cnt/2)
    #Plot
    ggplot(df1,aes(x = "", y = cnt, fill = establecimientos)) +
      geom_bar(width = 1, stat = "identity", color = "white") +
      scale_y_continuous(breaks = seq(0, length(establecimientos), length(establecimientos)/4), 
                         labels = c("0", "25%", "50%", "75%", "100%"))+
      coord_polar("y", start = 0) +
      geom_text(
        aes(y = cnt, label = pct), 
        color = "black", 
        position = position_stack(vjust = 0.5)
      )+
      theme(axis.text.y = element_blank(), 
            axis.title.y = element_blank(), 
            axis.ticks.y = element_blank(),
            axis.title.x = element_blank()) +
      labs(fill = "Establecimientos")
    

    输出:

    如果你想使用geom_label(),你可以使用下一个代码:

    #Plot 2
    ggplot(df1,aes(x = "", y = cnt, fill = establecimientos)) +
      geom_bar(width = 1, stat = "identity", color = "white") +
      scale_y_continuous(breaks = seq(0, length(establecimientos), length(establecimientos)/4), 
                         labels = c("0", "25%", "50%", "75%", "100%"))+
      coord_polar("y", start = 0) +
      geom_label(
        aes(y = cnt, label = pct), 
        color = "black", 
        position = position_stack(vjust = 0.5),show.legend = F
      )+
      theme(axis.text.y = element_blank(), 
            axis.title.y = element_blank(), 
            axis.ticks.y = element_blank(),
            axis.title.x = element_blank()) +
      labs(fill = "Establecimientos")
    

    输出:

    【讨论】:

      猜你喜欢
      • 2022-08-19
      • 2011-04-19
      • 1970-01-01
      • 2012-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多