我有像这样的数据
data = as.data.frame( rbind( c("1492", "Columbus sailed the ocean blue"),
c("1976", "Americans listened to Styx"),
c("2008", "financial meltdown. great.")
))
Run Code Online (Sandbox Code Playgroud)
我想建立一个情节ggplot2,将显示时间aes(x=$V1)和文字的箭头aes(label=$V2).在我试图绘制它之前,这听起来很简单.
更新:我没有写它,但你需要做as.Date("1492", format="%Y")正确的重现.
注意:下面给出的解决方案仅处理在特定日期发生的事件 - 而不是具有"期间"或"时代"的时间线.
[ 编辑2016年4月:此线程中的解决方案不再正确显示添加的轴 - 此问题的新线程已在ggplot2打开2.1.0打破了我的代码?二次变换轴现在显示不正确 ]
我正在使用缩放的x数据,并且需要在绘图顶部添加一个未缩放的x轴以便于解释.我遇到了一个添加辅助y轴的方法我如何在ggplot2的右侧放置一个转换后的比例?.但是,我无法让它在x轴上正常工作.我确定我不理解代码的某些部分,但我似乎无法弄清楚它是什么.我已经尝试过查看ggplot2帮助文件,以及Wickham书籍ggplot2:数据分析的优雅图形,但如果有人能指出我的一些相关文档,我会非常感激!
我正在使用温度数据,但是我将使用上面链接中的湖泊数据作为代码.以下是该链接的原始代码:
library(ggplot2)
library(gtable)
library(grid)
LakeLevels<-data.frame(Day=c(1:365),Elevation=sin(seq(0,2*pi,2*pi/364))*10+100)
p1 <- ggplot(data=LakeLevels) + geom_line(aes(x=Day,y=Elevation)) +
scale_y_continuous(name="Elevation (m)",limits=c(75,125))
p2<-ggplot(data=LakeLevels)+geom_line(aes(x=Day, y=Elevation))+
scale_y_continuous(name="Elevation (ft)", limits=c(75,125),
breaks=c(80,90,100,110,120),
labels=c("262", "295", "328", "361", "394"))
#extract gtable
g1<-ggplot_gtable(ggplot_build(p1))
g2<-ggplot_gtable(ggplot_build(p2))
#overlap the panel of the 2nd plot on that of the 1st plot
pp<-c(subset(g1$layout, name=="panel", se=t:r))
g<-gtable_add_grob(g1, g2$grobs[[which(g2$layout$name=="panel")]], pp$t, pp$l, pp$b,
pp$l)
ia <- which(g2$layout$name == "axis-l")
ga <- g2$grobs[[ia]]
ax <- ga$children[[2]]
ax$widths <- rev(ax$widths)
ax$grobs <- rev(ax$grobs) …Run Code Online (Sandbox Code Playgroud)