使用 ggplot 绘制深度剖面
Posted
技术标签:
【中文标题】使用 ggplot 绘制深度剖面【英文标题】:Plotting a depth profile with ggplot 【发布时间】:2013-11-14 06:47:49 【问题描述】:我正在尝试找出最好的方法来绘制几个深度剖面,其中深度在 y 轴(显然)和盐度和温度在 x 轴。
它只适用于温度,按日期对图表进行分面。但我想在我的个人资料中包含盐度。问题是,由于温度值在 0 到 2°C 之间,而盐度总是 >34,我将不得不使用不同的刻度。 我想不出一个好方法来绘制多个日期的两个变量的深度。
在这种情况下,我非常感谢您的帮助。 我用于在没有盐度的情况下绘制我的个人资料的代码是这样的:
scatter <- ggplot(profile, aes(Temp, Depth, colour = Date))
scatter + geom_point(size = 1.5) +
labs(x = "Temperature [°C]", y = "Depth [m]", colour = "Date") +
facet_wrap(~ Date,ncol=5, scales="fixed") +
scale_y_reverse() +
scale_color_discrete(guide="none") +
theme(plot.title = element_text(size = 18, vjust = 1)) +
theme(axis.text.x = element_text(size = 5, angle = 0, colour = 1)) +
theme(axis.text.y = element_text(size = 14, colour = 1)) +
theme(axis.title.x = element_text(size = 18, vjust = -0.5)) +
theme(axis.title.y = element_text(size = 18, angle = 90, vjust = 0.3)) +
theme(axis.line = element_line(size = 0)) +
theme(axis.ticks = element_line(size = 0.1))
如果没有办法用ggplot做到这一点?其他可能的解决方案?
【问题讨论】:
您应该提供数据(此处的配置文件)以重现您的图表。 你可以为盐度和温度制作单独的图表(使用类似facet_grid(variable ~ Date)
)
【参考方案1】:
编辑:我意识到这不是您问题的解决方案。但是,您的代码确实帮助我解决了我的问题。因此,我将研究如何将其扩展到刻面。您还应该包含您的数据。
我有这个问题的解决方案。 我一直在为一堂课做深度剖析。我发现如果你不小心,你可能会搞砸非常糟糕。为了我的示例,我已将其缩小到一个图形。我还将包括我的数据框。
数据框
date station depth abs conc
1 9/28/2019 S4.5 0 0.049 36.69231
2 9/28/2019 S4.5 10 0.049 36.69231
3 9/28/2019 S4.5 20 0.054 40.53846
4 9/28/2019 S4.5 30 0.054 40.53846
5 9/28/2019 S4.5 40 0.056 42.07692
6 9/28/2019 S4.5 50 0.062 46.69231
7 9/28/2019 S4.5 75 0.065 49.00000
8 9/28/2019 S4.5 100 0.085 64.38462
9 9/28/2019 S4.5 125 0.094 71.30769
10 9/28/2019 S4.5 150 0.089 67.46154
请注意标题"date","station","depth","abs","conc"
#treat conc as a function of depth and then reverse later
ggplot(data,aes(x=depth,y=conc))+
#set up the asthetics, the line must be broken because this is technically discrete data
geom_line(color="red",size=1, linetype=2)+
geom_point()+
#reverse depth so it starts at zero
scale_x_reverse()+
#put the y axis labes on the opposite side so when its flipped it will appear at top
scale_y_continuous(position="right")+
#this is how you reverse the look and order or the coordinates for the graph
coord_flip()
我发现,通过简单地反转 y 比例,如果您正在进行其他转换,您的行为会改变数据的投影方式。 根据我的课程需要添加的一些内容是顶部的值从 0 开始。为此,您需要为“x”轴设置一个限制。这是通过向坐标翻转添加参数来完成的。
...
#The order of the y lim matters! the vector must be ordered first value last value
coord_flip(ylim = c(<yourfirstvalue>,<yourlastvalue>))
...
据我所知,其他转换不会以对我的标记有意义的方式投影数据。如果其他人对此问题的解决方案有更好的描述,请随时纠正我。
【讨论】:
以上是关于使用 ggplot 绘制深度剖面的主要内容,如果未能解决你的问题,请参考以下文章
R语言使用ggplot2包和plotrix包绘制带有错误条(error bars)的可视化结果:使用ggplot2包绘制具有置信区间的可视化图像使用plotrix包绘制具有置信区间的可视化图像