使用ggplot绘制深度剖面图

时间:2013-11-03 15:06:32

标签: r ggplot2 profile depth

我正在试图找出在y轴上绘制多个深度剖面的最佳方法(显然)和x轴上的盐度和温度。

只需温度即可正常工作,按日期分割图表。但我想在我的个人资料中加入Salinity。问题是,当温度值在0到2°C之间且盐度总是> 34时,我将不得不使用不同的比例。 我无法找到一个好方法来绘制几个日期的深度变量。

在这种情况下,我真的很感激帮助。 我用于绘制没有Salinity的配置文件的代码是:

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无法做到这一点?其他可能的解决方案?

1 个答案:

答案 0 :(得分:0)

编辑:我知道这不是解决您问题的方法。但是,您的代码确实帮助我解决了我的问题。因此,我将研究如何将其扩展到多方面。您还应该包括您的数据。

我有解决此问题的方法。 我一直在为一个班级研究深度剖面。我发现,如果不小心,您可能会弄糟。为了我的示例,我将其缩小为一个图形。我还将包括我的数据框。

数据框

        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()

objectgenerated

我发现,通过简单地反转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>))
...

with ylim arguement 据我所知,其他转换不会以对我的标记有意义的方式投影数据。如果其他人对这个问题的解决方案有更好的描述,请随时纠正我。