【发布时间】:2021-02-15 23:24:03
【问题描述】:
我想绘制一个带有对数刻度 y 轴的图表:
data <- data.frame(x = seq_len(5), y = c(2,1,100,500,30))
ggplot(data) + aes(x,y) + geom_col() + scale_y_log10()
但是因为水平轴总是在 y = 1 处与垂直轴相交,所以永远不会绘制 y = 1 的条形图。
我知道 log(1) = 0,但我可以将绘图基数设置为 0.1 以让条形图从 1 以下开始吗?
【问题讨论】:
-
我们可以作弊:
ggplot(data) + aes(x, y + 0.1) + geom_col() + scale_y_log10() -
我想我在这里错过了重点。该图是正确的:Y 轴上的值是对数变换的,因此零变为 1;
log10(1)为零,所以你看不到小节 2 是正确的。你的目标是什么? -
一种选择是强制在条形周围画一条线 - 例如
geom_col(colour = "grey20"),这样你至少在 y=1 处得到一条线。