作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用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))
最佳答案
这是一种使用提供的代码来执行此操作的方法,但无需保存临时绘图。它利用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))
关于r - 向ggmosaic添加计数,这可以更简单吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50227916/
在ggmosaic包中,如何给列添加重量百分比标签?我想添加每列的百分比值(每列总百分比等于 100%)。谢谢! library(tidyverse) library(ggmosaic) ggplot
我是一名优秀的程序员,十分优秀!