2012-02-01 248 views
12

添加第二个y轴,缩放其中一个原始y轴。这个话题并不新鲜。它已被触及的时间,例如on this ggplot2 google groups thread。按照哈德利的建议,我试图通过geom_vline,geom_segmentgeom_text添加次y轴。但是,它仍然很难看。向ggplot2图添加第二个y轴 - 使其完美

所以,我会要求你的帮助,使其完美。我认为很多ggplot2用户会对这个话题感兴趣,并且更喜欢你的专业知识或贡献。提前致谢。

######################################### 
# what I have gotten. 
library(ggplot2) 

# build up a box plot 
p <- ggplot(mtcars, aes(factor(cyl), mpg)) 

# add the secondary y axis on right side of the plot 
p + geom_boxplot() + geom_vline(xintercept = 3.5) + 
geom_segment(aes(x=3.49, y=c(7,14,21,28), xend = 3.52, yend = c(7,14,21,28))) + 
geom_text(aes(x=3.55, y=c(7,14,21,28), label=c(7,14,21,28))) 
+0

一般是不建议使用副屏y轴... – jrara 2012-02-01 14:05:48

+1

对不起,我想要的东西其实不是一个次Y轴,它仅仅是一个标签。有时候这个标签是必需的。 – 2012-02-01 14:57:20

+0

您可能希望编辑您的问题以反映您希望获得额外标签的事实。我只是问了一个类似的问题,但具体到faceting上下文:http://stackoverflow.com/questions/11353287/how-do-you-add-a-general-label-to-facets-in-ggplot2 – 2012-07-05 22:26:09

回答

2

为了避免黑客入侵,您可以使用facet_grid代替。根据您的数据,您可以很好地定制它,使其成为更一般的辅助轴。

library(ggplot2) 
ggplot(mtcars, aes(factor(cyl), mpg)) + 
    geom_boxplot() + 
    facet_grid(cyl ~., scales = "free") 

enter image description here

+1

非常感谢,Dear Geek On Acid。这是一个选项。但是,这不是我想要的。在我的真实情况下,我有超过50个级别的X轴。我们的眼睛很难看到具有> 50个方面的情节。 – 2012-02-01 16:00:27