【问题标题】:ggplot multiple pie chart on one df not showing right ratio一个df上的ggplot多个饼图未显示正确的比例
【发布时间】:2021-04-24 01:08:15
【问题描述】:

我想为一个数据框创建多个饼图

    
|header| value1 |value2|Functionality |
|:-----|:-------|:-----|:-------------|
|k1    |69918   |116345|Non Functional|
|k2    |12595   |51755 |Non Functional|
|k3    |10482   |14973 |Non Functional|
|k4    |53590   |115612|Non Functional|
|k5    |10531   |18635 |Non Functional|
|k6    |10406   |16838 |Non Functional|
|k7    |14159   |24417 |Non Functional|
|k8    |11913   |18754 |Non Functional|
|k9    |8844    |15266 |Non Functional|
|k1    |4101077 |3739815   |Functional|
|k2    |723353  |1440359   |Functional|
|k3    |617290  |377484    |Functional|
|k4    |1584932 |1598903   |Functional|
|k5    |811679  |776848    |Functional|
|k6    |692557  |633247    |Functional|
|k7    |903137  |878248    |Functional|
|k8    |742021  |695467    |Functional|
|k9    |380319  |363830    |Functional|

我按照本指南执行了以下操作:https://www.geeksforgeeks.org/create-multiple-pie-charts-using-ggplot2-in-r/

df$Germline <- factor(df$header)
df$Functionality <- factor(df$Functionality)

ggplot(data=df, aes(x=" ", y=value1, group=Functionality, colour=Functionality, fill=Functionality)) +
         geom_bar(width = 1, stat = "identity") +
         coord_polar("y", start=0) + 
         facet_grid(.~ header) +theme_void()

但是我得到的结果

该值似乎是为所有现有值而不是每个单独的标头加起来的,我在这里做错了什么以及如何解决它?

另外,另外一个问题是 ggplotly 似乎不适用于多个饼图,是这样吗,想显示每个饼图的百分比。

谢谢

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    您可能需要获取每个标题组的相对百分比。 试试:

    library(tidyverse)
    
    df <- 
    tibble(header = c("k1", "k2", "k3", "k4", "k5", "k6", "k7", "k8", "k9", "k1", "k2", "k3", "k4", "k5", "k6", "k7", "k8", "k9"), 
           value1 = c(69918L, 12595L, 10482L, 53590L, 10531L, 10406L, 14159L, 11913L, 8844L, 4101077L, 723353L, 617290L, 1584932L, 811679L, 692557L, 903137L, 742021L, 380319L), 
           value2 = c(116345L, 51755L, 14973L, 115612L, 18635L, 16838L, 24417L, 18754L, 15266L, 3739815L, 1440359L, 377484L, 1598903L, 776848L, 633247L, 878248L, 695467L, 363830L), 
           functionality = c("Non Functional", "Non Functional", "Non Functional", "Non Functional", "Non Functional", "Non Functional", "Non Functional", "Non Functional", "Non Functional", "Functional", "Functional", "Functional", "Functional", "Functional", "Functional", "Functional", "Functional", "Functional"))
    
    df %>% 
      group_by(header) %>%
      mutate(pct_value = value1/sum(value1)) %>% 
      ggplot(aes(x= " ", y = pct_value, group = functionality, colour = functionality, fill = functionality)) +
      geom_bar(width = 1, stat = "identity") +
      coord_polar("y", start=0) + 
      facet_wrap(~header, nrow = 3) + 
      theme_void()
    

    【讨论】:

    • 谢谢,这行得通,我花了一段时间来更新 ggplot 和 group_by 的所有包以使用 %>%,一个问题,是否有可能在第一行设置为 5,在第二行设置为 4行,还是 3 x 3,所以情节看起来更大?
    • 当然!查看对facet_wrap() 的修改,现在有nrow = 3
    猜你喜欢
    • 1970-01-01
    • 2021-12-23
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 2021-12-15
    • 2019-02-25
    • 1970-01-01
    • 2021-11-18
    相关资源
    最近更新 更多