【问题标题】:overlaying two plots, one with flipped coordinates, ggplot覆盖两个图,一个带有翻转坐标,ggplot
【发布时间】:2019-08-26 17:19:40
【问题描述】:

我正在尝试将两个相似的图表叠加在一起,但其中一个带有“翻转坐标”。

我想绘制对称问题的“最佳响应”函数。所以我有两个图的相同数据框,只是需要翻转一个。

添加coord_flip() 将翻转“两个图”的坐标。

考虑以下数据:

df1 <- data.frame(
  x=c(0.000, 0.111, 0.222, 0.333, 0.444, 0.556, 0.667, 0.778, 0.889, 1.000),
  y=c(0.222, 0.111, 0.111, 0.000, 0.000, 1.000, 1.000, 0.889, 0.889, 0.778)
  )

我想做这张图,红线正好是黑线翻转:

以下代码

ggplot(df1)+ 
  geom_line(aes(x,y),color="black")+
  geom_line(aes(y,x),color="red")

结果,这不是我要找的。​​p>

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    在按所需顺序对数据集的行进行排序后,您可以使用geom_path 而不是geom_line 作为翻转线。来自?geom_path:

    geom_path() 按照观察的顺序连接观察 出现在数据中。 geom_line() 按顺序连接它们 x 轴上的变量。

    library(dplyr)
    
    df1 %>%
      arrange(x, y) %>%
      ggplot()+ 
      geom_line(aes(x, y), color = "black")+
      geom_path(aes(y, x), color = "red")
    

    【讨论】:

      【解决方案2】:

      这就是我的做法。

      library(ggplot2)
      
      df1 <- data.frame(x = seq(2, 8, by = 2),
                    y = seq(30, 15, by = -5))
      
      ggplot(df1)+ 
      geom_line(aes(x,log(y)),color="black")+
      geom_line(aes(log(y),x),color="red")
      

      【讨论】:

      • 谢谢安德鲁。这不能完成我想要的工作,因为它没有正确连接点(在我正在处理的另一个示例中)。我需要的是实际翻转图表。不确定这是否足够清楚,或者我应该写一个更完整的问题。
      • 在我看来,安德鲁的回答适合您发布的问题,所以如果您的问题比这更详细,也许您可​​以在问题中包含一些细节。
      • 我不确定我是否理解。 geom_line(aes(log(y),x),color="red") 不会导致 coord_flip() 吗?
      • 我已更改问题以显示我真正想做的事情。抱歉不清楚。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 2014-12-03
      相关资源
      最近更新 更多