将 ggplot2::stat_summary 与 R 中的单位一起使用时出现问题

problem using ggplot2::stat_summary with units in R

提问人:Joost Keuskamp 提问时间:6/14/2023 最后编辑:Joost Keuskamp 更新时间:7/9/2023 访问量:77

问:

对具有定义单位的值使用stat_summary时收到错误。该代码适用于无单位数据。有什么建议吗?

library(tidyverse)
library(units)

tb <- tibble(a=1:8 %>% set_units(kg),b=1:8) 
tb_unitless <- drop_units(tb)

现在,在没有单位的情况下,使用平均线创建绘图可以正常工作:

ggplot(tb_unitless,aes(x=b,y=a)) + 
stat_summary(fun = "mean", geom="hline",aes(yintercept=after_stat(y)))

但由于某种原因,不适用于单位的 Tibble:

ggplot(tb,aes(x=b,y=a)) + 
stat_summary(fun = "mean", geom="hline",aes(yintercept=after_stat(y)))

返回:

Error in `stat_summary()`:
! Problem while mapping stat to aesthetics.
ℹ Error occurred in the 1st layer.
Caused by error in `UseMethod()`:
! no applicable method for 'drop_units' applied to an object of class "c('double', 'numeric')"

如果我没记错的话,这在过去确实有效——这是一个错误,还是我做错了什么?

r ggplot2 测量单位

评论

0赞 Axeman 6/14/2023
不知道为什么,但这似乎是特定于的?F.D.(英语:F.D.) 工作正常。geom_hlineggplot(tb,aes(x=b,y=a)) + stat_summary(aes(color = after_stat(y)), fun = "mean", geom = "point")
0赞 Seth 6/14/2023
这看起来很不寻常,但确实有效:ggplot(tb,aes(x=b,y=a)) + stat_summary(fun = "mean", geom="hline",aes(yintercept=after_stat(y %>% set_units(kg)), x = mean(.data[['b']])))
1赞 Allan Cameron 6/14/2023
几何图形没有 x 美学hline
0赞 Joost Keuskamp 6/15/2023
@Seth 尽管您的解决方案有效,但它需要事先了解 a 所在的单元。

答: 暂无答案