在散点饼图中的每个饼图中添加饼比例的百分比
Adding percents for pie proportions in each piechart in scatterpie plot
我有一个散点图,我想为图中的每个饼图添加对应于饼图比例的百分比。
此问题是我发布的先前问题的后续问题 。
我的数据
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
绘制散点图
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()
这给出了这个情节:
如何为每个饼添加饼比例,比如下面的demo?
- (与演示不同,我希望为所有馅饼添加百分比,而不仅仅是前 5 个)。
解决这个问题的一个提示是 scatterpie
基本上是一个循环箱线图,如 commented by the developer。但是,当我尝试实施条形图注释策略时,我意识到我不知道如何将其应用于 scatterpie
.
您可以像这样使用 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()
为 x 轴上的每个刻度线不同地对齐标签(就像在您的演示中一样)需要更多的修改。
我有一个散点图,我想为图中的每个饼图添加对应于饼图比例的百分比。
此问题是我发布的先前问题的后续问题
我的数据
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
绘制散点图
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()
这给出了这个情节:
如何为每个饼添加饼比例,比如下面的demo?
- (与演示不同,我希望为所有馅饼添加百分比,而不仅仅是前 5 个)。
解决这个问题的一个提示是 scatterpie
基本上是一个循环箱线图,如 commented by the developer。但是,当我尝试实施条形图注释策略时,我意识到我不知道如何将其应用于 scatterpie
.
您可以像这样使用 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()
为 x 轴上的每个刻度线不同地对齐标签(就像在您的演示中一样)需要更多的修改。