3

私は、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 でそれを行う方法がない場合は? 他の可能な解決策は?

4

1 に答える 1

0

編集:これはあなたの問題の解決策ではないことを認識しています. ただし、あなたのコードは私の解決に役立ちました。したがって、これをファセットに膨らませる方法を検討します。データも含める必要があります。

I have a solution for this problem. I've been working on depth profiles for a class. I've found that you can mess up super bad if you are not careful. I've narrowed this down to one graphic for the sake of my example. I will also include my dataframe.

Dataframe

        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

Please note the headings "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

I found that by simply reversing the y scale you have have behaviour that transforms how the data is projected if you are doing other transformations. Some additions that are required according to my class is having the value at the top start at 0. To do this you will need to set a limit for the "x" axis. This is done by adding arguments to coordinate flip.

...
#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 As far as I can tell other transformations do not project the data in a way that makes sense to my markers. If others have a better description of a solution to this problem please feel free to correct me.

于 2020-10-21T02:54:45.717 に答える