对数-对数刻度y轴ggplot

时间:2019-12-05 16:27:48

标签: r ggplot2

我有两个数据框:

df1 <- data.frame(runif(100,0,0.02), 1:100)
colnames(df1) <- c("a","b")

df2 <- data.frame(runif(100,0,0.3), 1:100)
colnames(df2) <- c("a","b")

我需要并排两个散点图(每个数据框一个),y轴上的对数-对数刻度看起来完全像这样(外部yticks,所有标签之间的次要y滴答声等),但限于1(不是10):

enter image description here

我尝试过(1个数据帧的散点图):

ggplot(df1, aes(x=factor(b), y=a)) +
  geom_point() +
  scale_y_continuous(trans = log10_trans(),
                     breaks = trans_breaks("log10", function(x) 10^x),
                     labels = trans_format("log10", math_format(10^.x))) +
  annotation_logticks()

但是我仍然没有得到想要的东西

1 个答案:

答案 0 :(得分:0)

添加limits=c(10^-4,1)并更改labels=comma即可完成工作!

最终代码:

ggplot(df1, aes(x=factor(b), y=a)) +
  geom_point() +
  scale_y_continuous(trans = log10_trans(),
                     breaks = comma,
                     labels = trans_format("log10", math_format(10^.x)),
                     limits=c(10^-4,1)) +
  annotation_logticks()

此外,提示如何在comma函数中仅显示有效数字(即1代替1.0000,或0.1代替0.1000)?谢谢