我在RStudio工作并使用ggplot2。我想创建一个条形图,它将有效地作为米/秒的比例。然后,我想创建一个ggplot图形,该条形图在图形上叠加并略微透明。所以,我会有这样的事情:
barplot(DF1,space=20,axes=FALSE,las=2,col=1,xlab="meters/second")
创造了这个:
ggplot是:
ggplot(DF2, aes(x=Time, y=N1_ave)) + geom_line() + ylim(-1,1) + ggtitle("0.07 MA Average")
创建:
组合它们后我想要的是这样的:
这一切都可能吗?
答案 0 :(得分:3)
如果没有看到您的数据,很难确定,但根据您的说明,我们会创建一个ggplot
,但我们会使用一个使用N1_ave
绘制geom_line
的数据框和使用geom_segment
创建垂直线的数据框。这样,ggplot
负责所有缩放,我们不必担心两个不同图之间的比例尺。
关键是你必须在barVals
中设置x值,以便在图表的正确位置绘制垂直线。对于这个例子,我只是制作了它们,因为我不知道实际值应该是什么。
这是假数据的一个例子:
# This is the data series
set.seed(10)
dat = data.frame(x=seq(0,0.15,length.out=200), y=rnorm(200,0,0.2))
# These are the meters/second labels for the vertical lines
labels=c(0.27,0.29,0.31,0.33,0.36,0.4,0.44,0.5,
0.57,0.67,0.8,1,1.34,2.01,4.02,Inf)
# These are the x-values for where the vertical lines will be plotted
# (plus the labels created above)
barVals = data.frame(x=seq(0.005,0.145,length.out=length(labels)),
labels=labels)
ggplot(dat, aes(x,y)) +
geom_segment(data=barVals, aes(x=x, xend=x), y=-0.8, yend=0.8, colour="grey70") +
geom_text(data=barVals, aes(label=labels), y=-0.85, size=4, colour="grey50") +
geom_line(aes(group=1)) +
scale_y_continuous(limits=c(-1,1)) +
labs(x="Time", y="N1_ave") +
annotate(geom="text", x=0.075, y=-0.95, label="meters/second", colour="grey50")