过去几周我一直在学习ggplot。一般来说,我已经完成了事情(虽然很慢),但现在我被困住了。我创建了以下刻面图:http://dl.dropbox.com/u/7752237/example_bad_y_scales.pdf
分面由
完成pl <- pl + facet_wrap(~sci_name,ncol=1,scale="free")
问题:y尺度上的数字看起来不太好,特别是0-70(数字重叠)的尺度。 我想以某种方式改变y尺度上的休息次数(假设只有1或2次休息)。有没有人知道怎么做?任何帮助将非常感谢。 :)
PS:我没有包含一个最小的例子,因为我觉得解决这个特定的问题没什么用。
在Kohskes回答后编辑:
Hi Kohske, 哇,这是一个非常快的答案,谢谢!但是,我认为它不适用于刻面图。看看
p <- ggplot(mtcars, aes(wt, mpg))
p <- p + geom_point()
p <- p + facet_wrap(~gear,ncol=1,scale="free")
在y尺度上,它在中间图中给出了3个断点,在下图中给出了8个断点...不是很一致(但至少不像我的例子那样重叠)。
p2 <- p + scale_y_continuous(breaks=c(15,30),minor_breaks=c(10,20,25))
也不是很好:下部地块有两个主要的蜱,中间和上部地块只有一个。 当比例差异大于mtcars时,结果会更不令人满意。还有其他想法吗? ;)
在Kohskes编辑后编辑:
嗨,我看不出如何实现这个。在谷歌上搜索ggplot和input_break仅产生了10个结果,但没有一个能够提供帮助。 我试过了
p <- ggplot(mtcars, aes(wt, mpg))
p <- p + geom_point()
p <- p + facet_wrap(~gear,ncol=1,scale="free")
p$input_breaks<-function(., range) {
pretty(range, n=3)
}
print(p)
但是,我在图表中看不到任何效果(尝试n = 1,3,15)。你能描述一下如何在mtcars例子上实现这个吗?谢谢!
答案 0 :(得分:3)
p&lt; - ggplot(mtcars,aes(wt,mpg)) p&lt; - p + geom_point()
dev.new(height=1)
print(p)
dev.new(height=1)
p <- p + scale_y_continuous(breaks=c(15,30),minor_breaks=c(10,20,25))
print(p)
技巧是scale_y_continuous,您可以在其中指定中断和小的中断。
编辑:
可能你不能为每个方面分别指定休息时间。 一个解决方法是通过以下方式控制休息的美观:
Trans$input_breaks<-function(., range) {
pretty(range, n=3)
}
print(p)
改变“n = 3”会产生不同的美感。
再次编辑:
这是完整的例子:
library(ggplot2)
p <- ggplot(mtcars, aes(wt, mpg))+geom_point()
Trans$input_breaks<-function(., range) {
pretty(range, n=100)
}
print(p)
在这种情况下,你可能会看到一百个滴答声。 通过更改n = 100,您可以自定义它。
请注意,这有副作用。此后的所有图都有相同的刻度数,并且x和y轴的刻度数相同。