我有这种格式的数据集。
head(sppec.p)
Wavelength_.nm. Mean Lower Upper Species Feature_selection Count
1 400 0.1467549 0.1290778 0.2758327 ALAL T-test 0
2 405 0.1454303 0.1271905 0.2726207 ALAL T-test 0
3 410 0.1464431 0.1290472 0.2754903 ALAL T-test 0
4 415 0.1468586 0.1298166 0.2766753 ALAL T-test 0
5 420 0.1485061 0.1310419 0.2795480 ALAL T-test 0
6 425 0.1517019 0.1342690 0.2859708 ALAL T-test 0
我最初打算做一个双轴图,但在这里搜索之后,我意识到ggplot
中的“不可能”,很多人建议不要使用这些图。因此,我已经确定了一个方面的情节。我尝试先做个别情节但我无法弄清楚如何使用facet_wrap
和scales = "free_y"
来获得相同x轴但不同y轴的2个图。
各个图表的代码:
myplot<-ggplot(sppec.p, aes(x=Wavelength_.nm., y=Mean, group=Species, linetype = Species,
ymin = Lower, ymax = Upper)) +
geom_ribbon(alpha = 0.2,fill='gray') +
geom_line() + theme_bw() +scale_fill_grey(start = 0.1, end = 0.9) +
opts(panel.background = theme_rect(fill='grey80')) +
ylim(0,3)
myplot + theme_bw ()+ opts(axis.line = theme_segment(colour = "black"),
panel.grid.major = theme_blank(),
panel.grid.minor = theme_blank())
......生产
第二张图:
cum.totals<-ggplot(sppec.p, aes(Wavelength_.nm., y=Count, fill = factor(Feature_selection))) + geom_bar(stat="identity")
cum.totals + theme_bw() +scale_fill_grey(start = 0.1, end = 0.9)+
opts(axis.line = theme_segment(colour = "black"),
panel.grid.major = theme_blank(),
panel.grid.minor = theme_blank(),
panel.border = theme_blank(),
panel.background = theme_blank())
制作图表:
虽然两个y轴在数值上都是等价的,但它们代表不同的值。
我对ggplot
不是很熟悉,我想知道如何使用facet_wrap
或任何其他功能,这些功能可以让我在共享相同的a轴上获得2个图但在2中面。是否可以提高我的代码效率?
所以最终输出的布局基本上是这样的:
答案 0 :(得分:1)
Facet
非常有用。你的情况有所不同。查看各种facet_grid
和facet_wrap
上的帮助条目,了解其中的差异。这可以帮助您入门 -
ggplot(mtcars, aes(mpg, wt)) + geom_point() + facet_grid(. ~ cyl)
我不是两个不同y轴对着相同x轴的忠实粉丝(如果我理解的话,那就是你要在那里做的事情)。相反,请使用参数gridExtra::arrangeGrob
尝试ncol = 1
,使您的图表垂直叠放在另一个上面,这样您就可以将相同的x轴相互叠加,并实现类似的效果。