ggplot2,在x对数刻度上引入中断 [英] ggplot2, introduce breaks on a x log scale

查看:47
本文介绍了ggplot2,在x对数刻度上引入中断的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个这样的情节:

 p<-ggplot() +
 geom_line(data= myData, aes(x = myData$x , y = myData$y)) +
 scale_x_log10()+
 scale_y_log10()

我的x值是 seq(9880000,12220000,10000)

在图的x轴上只有一个中断,如果要在图的x轴上至少得到3个中断,该怎么办?

There is only one break on the x-axis of the plot, what should I do if to get at least 3 breaks on the plot x-axis?

推荐答案

这里是原始海报问题的完全可重现的示例,其中对数比例绘制的图仅在x轴上显示一个中断值.我在下面演示了三种可能的解决方案.

Here is fully reproducible example of the original poster's problem where a log-scaled plot only displays one break value on the x-axis. I demonstrate three possible solutions below.

library(ggplot2)

# Create a reproducible example data.frame using R functions.
x = seq(9880000, 12220000, 10000)

# Use set.seed() so that anyone who runs this code
# will get the same sequence of 'random' values.
set.seed(31415) 
y = cumsum(runif(n=length(x), min=-1e5, max=1e5)) + 1e6

dat = data.frame(x=x, y=y)

# Original poster's plot.
p1 = ggplot(data=dat, aes(x=x, y=y)) + 
     geom_line() +
     scale_x_log10() +
     scale_y_log10() +
     labs(title="1. Plot has only one x-axis break.")

# Add extra x-axis breaks manually.
x_breaks = c(10^7.0, 10^7.04, 10^7.08)
p2 = ggplot(data=dat, aes(x=x, y=y)) + 
     geom_line() +
     scale_x_log10(breaks=x_breaks) +
     scale_y_log10() +
     labs(title="2. Add some x-axis breaks manually.")


# Add extra x-axis breaks in semi-automated manner.
x_breaks = 10^pretty(log10(x))
x_labels = formatC(x_breaks, format = "e", digits = 2)
p3 = ggplot(data=dat, aes(x=x, y=y)) + 
     geom_line() +
     scale_x_log10(breaks=x_breaks, labels=x_labels) +
     scale_y_log10() +
     labs(title="3. Create x-axis breaks with R functions.")



# Skip the log10 scale because the x-values don't span multiple orders of magnitude.
p4 = ggplot(data=dat, aes(x=x, y=y)) + 
     geom_line() +
     scale_y_log10() +
     labs(title="4. Check appearance without log10 scale for x-axis.")


library(gridExtra)
ggsave("example.png", plot=arrangeGrob(p1, p2, p3, p4, nrow=2),
       width=10, height=5, dpi=150)

这篇关于ggplot2,在x对数刻度上引入中断的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆