【问题标题】:Plotting multiple x axis profiles from a csv file in R?从R中的csv文件绘制多个x轴轮廓?
【发布时间】:2020-09-08 01:08:48
【问题描述】:

我计划在同一张图中绘制 x 轴上多个参数的垂直剖面图,例如盐度、温度、密度和 y 轴上的压力。这是我希望得到的情节:

这是我的数据中的一个示例:

ï..IntD.Date. IntT.Time. Salinity..psu. SIGMA.Kg.m3. Pressure.dbar.
1  21-April-2019 5:31:55 PM        30.2502      20.2241         0.7160
2  21-April-2019 5:32:00 PM        31.0254      20.8081         0.8409
3  21-April-2019 5:32:05 PM        31.2654      20.9930         1.0551
4  21-April-2019 5:32:10 PM        31.2953      21.0176         1.2694
  Temp..0C. Vbatt.volt.
1   23.4054       12.29
2   23.4148       12.30
3   23.4060       12.29
4   23.4024       12.33 

我已经使用了这些代码:

data <- read.csv('file location')
vert_plot <- ggplot(data, aes(x = Pressure.dbar., y = Temp..0C.)) + geom_line(color = '#088DA5', size = 0.75) + labs(size = 18) + ggtitle("temp vs pressure") + theme_grey() + coord_flip() + scale_y_reverse()

这产生了这个情节:

如您所见,我能够带来一个单一的配置文件,其中 y 轴的比例不是相反的顺序,而我更喜欢压力值(0、5、10 ....)开始从左上角。与我绘制的压力值从左下角开始的绘图不同。

如果有人帮助我获得数字,我将不胜感激,我将能够在同一图中绘制多个垂直剖面,其中 y 轴是压力并且顺序相反,如阻挡层厚度图片所示。

【问题讨论】:

    标签: r csv ggplot2 graph


    【解决方案1】:

    根据需要添加尽可能多的 geom_line() 并在每个 geom_line() 中调用 aes。对于 5 个中断,添加 scale_x_continuous 并在其中调用中断序列。

    vert_plot <- ggplot(df) + 
      geom_line(aes(x = Pressure.dbar., y = Temp..0C.), color = 'blue', size = 0.75) + 
      geom_line(aes(x = Pressure.dbar., y = Salinity..psu.), color = 'red', size = 0.75) + 
      geom_line(aes(x = Pressure.dbar., y = SIGMA.Kg.m3.), color = 'green', size = 0.75) + 
      labs(size = 18) + ggtitle("Dummy Title") + xlab("Pressure") + ylab("Dummy Label") +
      scale_x_reverse(limits = c(40, 0), breaks = seq(40, 0, -5)) +
      theme_grey() + coord_flip() + scale_y_reverse()
    

    替代方法:

    您可以熔化数据框,将变量名称保持为组,而不是遍历所有这些。

    library(reshape2)
    
    newdf <- melt(df, id.vars = c("IntD.Date.", "IntT.Time.", "Pressure.dbar."), 
                  variable.name = "group")
    
    vert_plot <- ggplot(newdf, aes(x = Pressure.dbar., y = value, color = group)) + 
      geom_line(size = 0.75) + 
      labs(size = 18) + ggtitle("Dummy Title") + 
      xlab("Pressure") + ylab("Dummy Label") +
      scale_x_reverse(limits = c(40, 0), breaks = seq(40, 0, -5)) +
      theme_grey() + coord_flip() + scale_y_reverse()
    

    【讨论】:

    • 感谢您的回复,我也想知道如何反转 y 轴,在您的图中压力值从左下角开始,我想从左上角开始。我希望这是有道理的。此外,是否可以在绘图中添加另一个轴标签?如您所见,虽然您绘制了 3 个参数,但只有温度的一个可见。
    • 更新了我的答案并添加了替代的绘图方式。
    • 再次感谢您处理此事。您的替代方法可以解决大部分问题。但是,你能告诉我如何为 x 轴添加额外的标签吗?在图中,只显示温度标签,是否有可能我也可以显示盐度或温度标签?像这个图:imgur.com/z0n5jMI
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    相关资源
    最近更新 更多