【发布时间】:2022-12-03 11:15:21
【问题描述】:
我的情节有一些限制:
-
xaxis 应该是反转的和对数的 -
yaxis 应该装箱,但是:- bins 应该以相反的顺序显示
- bins 大小应该有对数刻度或类似的东西(
0-10bin 应该大于10-20,等等)
- 对于
x和y,0刻度应该出现在轴上(我们通常用limits=c(0, 0)实现)
这是一些示例数据:
set.seed(123)
dat <- data.frame(
a=sample(seq(0, 100), 1e4, replace=TRUE),
b=sample(1e6, 1e4),
t=sample(letters[seq(2)], 1e4, replace=TRUE)
)
我可以在x 轴上实现大部分约束,在y 上实现一些约束:
dat |> ggplot(aes(y=a, x=b, colour=t)) +
geom_jitter() +
scale_x_continuous(
trans=c("log10", "reverse"),
breaks=seq(0, 6) |> purrr::map(~c(2.5, 5, 10)*10^.x) |> unlist(),
expand=c(0, 0)
) +
scale_y_binned(expand=c(0, 0), limits=c(0, 100)) +
ggthemes::theme_clean()
这里缺少的是:
- 0 tick on
x:使用limits=c(0, 100)和log比例产生错误。使用scales::pseudo_log_trans而不是scales::log10不起作用。我尝试使用ggallin::pseudolog10_trans,它也保留 0 和负数,但不知道如何将它与另一个变压器混合。 -
y轴上的对数刻度。这里的问题是scale_y_binned将数据离散化,log transformation只能应用于连续数据。 - 反转
y轴。这里的问题是相似的,因为反转轴不仅仅是ggplot2的整容操作,就像coord_flip一样;它实际上也是一种需要连续数据的转换。
干杯!
【问题讨论】: