我在下面附上了一个简单的例子 . 我想在图的右侧添加一个刻度(刻度线和注释),以英尺为单位显示高程 . 我知道ggplot2不会允许两个不同的比例(见Plot with 2 y axes, one y axis on the left, and another y axis on the right),但因为这是相同比例的转换,有没有办法做到这一点?我更喜欢继续使用ggplot2而不必恢复到plot()函数 .
library(ggplot2)
LakeLevels<-data.frame(Day=c(1:365),Elevation=sin(seq(0,2*pi,2*pi/364))*10+100)
p <- ggplot(data=LakeLevels) + geom_line(aes(x=Day,y=Elevation)) +
scale_y_continuous(name="Elevation (m)",limits=c(75,125))
p
4 回答
你应该看一下这个链接http://rpubs.com/kohske/dual_axis_in_ggplot2 .
我已经根据你的例子调整了那里提供的代码 . 这个修复看起来非常“hacky”,但它会让你成为那里的一部分 . 剩下的唯一部分是弄清楚如何将文本添加到图表的右轴 .
我可能已经找到了一个放置轴 Headers 的解决方案,其中一些来自Nate Pope答案的想法可以在这里找到:
ggplot2: Adding secondary transformed x-axis on top of plot
关于在gtable中访问grobs的讨论:https://groups.google.com/forum/m/#!topic/ggplot2-dev/AVHHcYqc5uU
最后,我刚刚添加了该行
在致电
grid.draw(g)
之前,这似乎可以解决问题 .据我了解,它采用y轴 Headers
g2$grob[[7]]
并将其置于最右侧 . 它可能不是美妙的解决方案,但它对我有用 .最后一件事 . 找到一种旋转轴 Headers 的方法会很不错 .
问候,
蒂姆
这个问题已得到解答,但是在ggplot对象的右侧添加辅助轴和辅助比例的一般问题是一直出现的问题 . 我想在下面报告我对问题的调整,基于此线程中的各种答案给出的几个元素以及其他几个线程(参见下面的部分参考列表) .
我需要批量 生产环境 双y轴图,所以我构建了一个函数
ggplot_dual_axis()
. 以下是潜在兴趣的特征:The code displays gridlines for both the y-left and y-right axes (这是我的主要贡献,虽然它是微不足道的)
The code prints a euro symbol and embeds it into the pdf (我在那里看到的东西:Plotting Euro Symbol € in ggplot2?)
代码试图避免两次打印某些元素('尝试'表明我怀疑它是否完全成功)
未答复的问题:
有没有办法修改
ggplot_dual_axis()
函数以删除其中一个geom_line()
或geom_point()
或其他任何可能没有抛出错误,如果没有这样的geom元素 . 在伪代码中像if has(geom_line) ...
如何通过关键字而不是索引来调用
g2$grobs[[7]]
?这就是它返回的内容:text[axis.title.y.text.232]
我对这个问题的兴趣源于我通过应用类似的技巧尝试 grab 网格线的失败 . 我认为网格线隐藏在g2$grobs[[4]]
内的某个地方,但我不知道如何访问它们 .Edit . 问题我能够自己回答:如何增加右侧的绘图边距,'Euro'标签在哪里?答:例如,
theme(plot.margin = unit(c(1,3,0.5,0.8), "lines"))
会做的伎俩 .请指出任何明显的问题或建议改进 .
现在代码:希望它对某人有用 . 正如我所说,我并不要求原创性,这是其他人已经展示的事物的组合 .
还有一些虚假数据和两个以美元和欧元为单位的情节 . 拥有一个可以让你制作一个情节的包裹并且用它来包围调用双y轴情节并不是很酷,它会自动获取你的汇率! :-)
部分参考清单:
Display two parallel axes on a ggplot (R)
Dual y axis in ggplot2 for multiple panel figure
How can I put a transformed scale on the right side of a ggplot2?
Preserve proportion of graphs using grid.arrange
The perils of aligning plots in ggplot
https://github.com/kohske/ggplot2
要旋转轴 Headers ,请将以下内容添加到p2图表中: