使用 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 绘制深度剖面的主要内容,如果未能解决你的问题,请参考以下文章

ue5地形无法绘制

在变量中绘制连续和离散数据

R语言使用ggplot2包和plotrix包绘制带有错误条(error bars)的可视化结果:使用ggplot2包绘制具有置信区间的可视化图像使用plotrix包绘制具有置信区间的可视化图像

使用 ggplot2 绘制 shapefile 的伪影

使用 ggplot 绘制 SpatialPolygonDataFrame

使用 ggplot 绘制绘图时,hjust 和 vjust 做了啥?