问题描述
我想制作一个自定义 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,但即使我指定了中断,我也会得到默认中断,如下所示:
有一个以前的 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 执行此操作,则不会发生转换,即使我指定了中断和标签,我仍然会获得默认中断。
我可以解决这个问题的一种方法是“手动”计算 CDF 并自己进行转换,然后设置自定义标签,但是我在上面做错了什么需要更改还是有我可以使用的替代方法利用 ggplot(或 tidyverse 或其他预先存在的)功能?
这是使用 R 4.0.3、ggplot 3.3.3 和缩放 1.1.1。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)