gpt4 book ai didi

r - 向ggmosaic添加计数,这可以更简单吗?

转载 作者:行者123 更新时间:2023-12-04 11:30:41 26 4
gpt4 key购买 nike

我想使用ggmosaic软件包制作一个马赛克图,并添加计数,如下例所示。

该示例的工作方式不错,但是我发现代码的结构非常难看。
您对我如何改进代码以使其更具可重用性有任何建议吗?

与通常使用ggplot2可以实现的情况相比,尤其是需要将图的早期版本存储在临时变量中似乎是错误的。

library(tidyverse)
library(ggmosaic)
#> Indlæser krævet pakke: productplots
#>
#> Vedhæfter pakke: 'ggmosaic'
#> De følgende objekter er maskerede fra 'package:productplots':
#>
#> ddecker, hspine, mosaic, prodcalc, spine, vspine

data <- tribble(~a, ~b,
1, 1,
1, 1,
1, 1,
1, 2,
2, 1,
2, 2,
3, 2)

p <- ggplot(data) +
geom_mosaic(aes(x=product(b, a), fill=as.factor(b)))

p +
geom_label(data = ggplot_build(p)$data %>% as.data.frame() %>% filter(.wt > 0),
aes(x = (xmin + xmax)/2,
y = (ymin + ymax)/2,
label = .wt))

reprex package(v0.2.0)创建于2018-05-08。

最佳答案

这是一种使用提供的代码来执行此操作的方法,但无需保存临时绘图。它利用ggplot的last_plot来访问绘图对象直到最新的'+',并且还使用layer_data而不是ggplot_build更简单地访问数据。

library(tidyverse)
library(ggmosaic)
data <- tribble(~a, ~b,
1, 1,
1, 1,
1, 1,
1, 2,
2, 1,
2, 2,
3, 2)

data <- data %>%
mutate(across(c(a, b), as.factor))

ggplot(data) +
geom_mosaic(aes(x=product(b, a), fill=b)) +
geom_label(data = layer_data(last_plot(), 1) %>% filter(.wt > 0),
aes(x = (xmin + xmax) / 2,
y = (ymin + ymax) / 2,
label = .wt))

reprex package(v0.3.0)创建于2020-07-05
它仍然是一个hack,但是它将减轻您分配临时情节的痛苦。

关于r - 向ggmosaic添加计数,这可以更简单吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50227916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com