ggplot stat_ecdf 带有 coord_trans 和自定义刻度

问题描述

我想制作一个自定义 CDF,我可以在其中以 0.9、0.99、0.999 等之间的均匀间距查看 CDF 的顶部。

为此,我尝试了以下代码:

library(ggplot2)
library(scales)

log_tail_trans = function() trans_new("log_tail",function(x) -log10(1-x),function(y) 1 - 10^(-y),breaks=c(0.9,0.99,0.999))

p <- ggplot(df,aes(value)) +
  stat_ecdf(geom='step') +  
  coord_trans(y = 'log_tail') +
  theme_bw() +
  ylim(c(0.68,0.999999)) +
  xlim(c(0,1000))

这似乎产生了我想要的 CDF,但即使我指定了中断,我也会得到默认中断,如下所示:

CDF with default breaks

有一个以前的 SO 问题,有人在没有 CDF 的情况下遇到了同样的问题,接受的答案是在应用 coord_trans 后使用 scale_y_continuous 来修改中断,但是如果用 CDF 做同样的事情,则没有变化,我得到了上图。

p <- ggplot(df,aes(value)) +
  stat_ecdf(geom='step') +  
  coord_trans(y = 'log_tail') +
  scale_y_continuous(breaks=c(0.9,0.999),labels=c(0.9,0.999)) +
  theme_bw() +
  ylim(c(0.68,1000))

我也尝试将我的转换传递给 scale_y_continuous,但如果我使用 CDF 执行此操作,则不会发生转换,即使我指定了中断和标签,我仍然会获得默认中断。

enter image description here

我可以解决这个问题的一种方法是“手动”计算 CDF 并自己进行转换,然后设置自定义标签,但是我在上面做错了什么需要更改还是有我可以使用的替代方法利用 ggplot(或 tidyverse 或其他预先存在的)功能?

这是使用 R 4.0.3、ggplot 3.3.3 和缩放 1.1.1。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...