在散点图中的每个饼图中添加饼比例的百分比

时间:2020-07-24 07:14:44

标签: r ggplot2 scatterpie

我有一个散点图,我想为图中的每个饼图添加对应于饼图比例的百分比。

这个问题是我之前发布的enter image description here上一个问题的后续内容。

我的数据

belong to user 1

绘制散点图

 playerId  deviceId    user 
     a       123         1
     b       123         1
     b       321         1
     d       321         1
     e       aaa         2
     f       ccc         2
     g       cba         2
     h       aaa         2
     h       ccc         2
     i       cba         2
     i       aaa         2
    ...      ...        ...

给出此图:

here



如何为每个饼图添加饼图比例,例如以下演示?

  • (与演示不同,我希望将百分比添加到所有饼中,而不仅仅是前5个)。

scatterpie

解决此问题的一个提示是,library(tidyverse) library(scatterpie) my_df <- structure(list(day_in_july = 13:20, yes_and_yes = c(0.611814345991561, 0.574750830564784, 0.593323216995448, 0.610539845758355, 0.650602409638554, 0.57429718875502, 0.575971731448763, 0.545454545454545), yes_but_no = c(0.388185654008439, 0.425249169435216, 0.406676783004552, 0.389460154241645, 0.349397590361446, 0.42570281124498, 0.424028268551237, 0.454545454545455), y = c(0.388185654008439, 0.425249169435216, 0.406676783004552, 0.389460154241645, 0.349397590361446, 0.42570281124498, 0.424028268551237, 0.454545454545455)), row.names = c(NA, -8L), class = c("tbl_df", "tbl", "data.frame")) > my_df ## # A tibble: 8 x 4 ## day_in_july yes_and_yes yes_but_no y ## <int> <dbl> <dbl> <dbl> ## 1 13 0.612 0.388 0.388 ## 2 14 0.575 0.425 0.425 ## 3 15 0.593 0.407 0.407 ## 4 16 0.611 0.389 0.389 ## 5 17 0.651 0.349 0.349 ## 6 18 0.574 0.426 0.426 ## 7 19 0.576 0.424 0.424 ## 8 20 0.545 0.455 0.455 本质上是一个循环的箱线图,如scatterpie_demo。但是,当我尝试实施barplot注释策略时,我意识到我不知道如何将其应用于xvals <- my_df$day_in_july ggplot(data = my_df) + geom_scatterpie(aes(x = day_in_july, y = y*20, r = 0.25), data = my_df, cols = colnames(my_df)[2:3], color = "red") + scale_fill_manual(values = c("pink", "seagreen3")) + scale_x_continuous(labels = xvals, breaks = xvals) + scale_y_continuous(name = "yes but no", labels = function(x) x/20) + coord_fixed()

1 个答案:

答案 0 :(得分:1)

您可以像这样添加带有geom_text的标签。

ggplot(data = my_df) +
  geom_scatterpie(aes(x = day_in_july, y = y*20, r = 0.25), 
                  data = my_df, 
                  cols = colnames(my_df)[2:3],
                  color = "red") + 
  geom_text(aes(y = y*20, x = day_in_july, 
                label = paste0(formatC(y*100, digits = 3), "%")),
                nudge_y = 0.07, nudge_x = -0.25, size = 3) +
  geom_text(aes(y = y*20, x = day_in_july, 
                label = paste0(formatC((1-y)*100, digits = 3), "%")),
            nudge_y = 0.07, nudge_x = 0.25, size = 3) +
  scale_fill_manual(values = c("pink", "seagreen3")) +
  scale_x_continuous(labels = xvals, breaks = xvals) +
  scale_y_continuous(name = "yes but no",
                     labels = function(x) x/20) + 
  coord_fixed()

enter image description here

针对x轴上的每个刻度不同地对齐标签(如您的演示中一样)将需要更多修补。

相关问题