覆盖两个图,一个具有翻转坐标,ggplot

时间:2019-08-26 17:19:40

标签: r ggplot2

我正在尝试覆盖两个相似的图形,但是一个图形带有“翻转坐标”,彼此重叠。

我想画一个对称问题的“最佳响应”功能。因此,对于两个图,我具有相同的数据框,只是需要翻转一个。

添加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)
  )

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

desired result

以下代码

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

结果就是这样,这不是我想要的。

actual result

2 个答案:

答案 0 :(得分: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")

plot

答案 1 :(得分:0)

这就是我的做法。

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