首页 > 解决方案 > 在R中的同一图中绘制具有不同xintervals的两个文件

问题描述

我有两个要在图表中绘制的文件。以下是文件:

文件 1:

 structure(c(1000, 935, 925, 903, 868, 850, 805, 797, 759, 738, 
 734, 700, 683, 666, 567, 562, 500, 487, 461, 416, 400, 393, 372, 
 364, 357, 338, 333, 329, 315, 300, 283, 280, 263, 250, 231, 200, 
 189, 176, 150, 141, 119, 104, 103, 101, 100, NA, 21.4, 21.2, 
 20.4, 19.1, 18.4, 17, 17.8, 17.4, 14.7, 14.2, 13.2, 12, 10.8, 
 -0.7, -1, -4.9, -5.8, -7.7, -12.5, -14.3, -15.1, -17.5, -18.5, 
 -19.9, -22.3, -23.1, -23.7, -26, -28.5, -31.5, -32.1, -35.9, 
 -38.9, -43.5, -51.9, -55.1, -59.1, -67.1, -70, -78.1, -84.5, 
 -83.3, -80.9, -79.1), .Dim = c(45L, 2L))

文件 2:

 structure(c(1000, 950, 900, 850, 800, 750, 700, 650, 600, 550, 
 500, 450, 400, 350, 300, 250, 200, 150, 100, NA, 25.4, 27.2, 
 20.5, 18.1, 17.4, 16, 14.2, 13.2, 12, 10.8, -0.7, -1, -4.9, -17.5, 
 -84.5, -83.3, -80.9, -79.1), .Dim = c(19L, 2L))

问题:

1第一个文件有不规则间隔,第二个文件有规则间隔100。我有多个文件类似于文件1(也有不规则间隔)。如何在 1 个图中绘制这 2 个文件?我想在绘制到 100 时指定间隔。

我尝试使用 plot() 选项和 par(new=T) 在 R 中绘制它。结果如下:

样本输出

y 轴似乎相互重叠。

[2] 我想将 y 轴绘制为在最低级别以 1000 反转。

[3] 有没有办法在 ggplot 中做到这一点?

关于如何在 R 中执行此操作的任何建议?

我会很感激任何帮助。

标签: rggplot2plot

解决方案


解决方案使用plotly

您的输入数据:

df=data.frame(structure(c(1000, 935, 925, 903, 868, 850, 805, 797, 759, 738, 
           734, 700, 683, 666, 567, 562, 500, 487, 461, 416, 400, 393, 372, 
           364, 357, 338, 333, 329, 315, 300, 283, 280, 263, 250, 231, 200, 
           189, 176, 150, 141, 119, 104, 103, 101, 100, NA, 21.4, 21.2, 
           20.4, 19.1, 18.4, 17, 17.8, 17.4, 14.7, 14.2, 13.2, 12, 10.8, 
           -0.7, -1, -4.9, -5.8, -7.7, -12.5, -14.3, -15.1, -17.5, -18.5, 
           -19.9, -22.3, -23.1, -23.7, -26, -28.5, -31.5, -32.1, -35.9, 
           -38.9, -43.5, -51.9, -55.1, -59.1, -67.1, -70, -78.1, -84.5, 
           -83.3, -80.9, -79.1), .Dim = c(45L, 2L)))


 df1= data.frame(structure(c(1000, 950, 900, 850, 800, 750, 700, 650, 600, 550, 
             500, 450, 400, 350, 300, 250, 200, 150, 100, NA, 25.4, 27.2, 
             20.5, 18.1, 17.4, 16, 14.2, 13.2, 12, 10.8, -0.7, -1, -4.9, -17.5, 
             -84.5, -83.3, -80.9, -79.1), .Dim = c(19L, 2L)))

代码:

plot_ly(df) %>%
  add_trace(x=df$X1,y=df$X2,name = 'Line 1',type = 'scatter',mode = 'lines+markers',connectgaps = TRUE) %>%
  add_trace(x=df1$X1,y=df1$X2,name = 'Line 2',type = 'scatter',mode = 'lines+markers',connectgaps = TRUE,yaxis = "y2") %>%
  layout(title = 'Title here',
         xaxis = list(title = "X-axis title"),
         yaxis2 = list(side = 'right', overlaying = "y", title = 'secondary y axis', showgrid = FALSE, zeroline = FALSE))

工作演示的代码片段: 在此处输入图像描述


推荐阅读