用ggplot在一个图中绘制两个图

时间:2020-02-26 16:11:25

标签: r ggplot2

我需要使用ggplot在“一个图”中创建“两个图”。我设法用R为基数,如下所示:

x=rnorm(10)
y=rnorm(10)*20+100

plot(1:10,rev(sort(x)),cex=2,col='red',ylim=c(0,2.2))
  segments(x0=1:10, x1=1:10, y0=1.8,y1=1.8+y/max(y)*.2,lwd=3,col='dodgerblue')

但是,我在ggplot上苦苦挣扎,怎么办呢?

2 个答案:

答案 0 :(得分:3)

这是该代码的一种可能翻译。

ggplot(data.frame(idx=seq_along(x), x,y)) +
  geom_point(aes(idx, rev(sort(x))), col="red") + 
  geom_segment(aes(x=idx, xend=idx, y=1.8, yend=1.8+y/max(y)*.2), color="dodgerblue")

enter image description here

通常,使用ggplot2,您可以通过添加其他图层(几何体)将多个数据视图添加到绘图中

答案 1 :(得分:1)

我的解决方案类似于@MrFlick。

我总是建议您拥有一个绘图数据框并从那里引用变量,因为您可以更轻松地将变量与绘图美学联系起来。

library(tidyverse)
plot_df <- data.frame(x, y) %>%
    arrange(-x) %>%
    mutate(id = 1:10)

ggplot(plot_df) +
    geom_point(aes(id, x), color = "red", pch = 1, size = 5) +
    geom_segment(aes(x = id, xend = id, y = 1.8, yend = 1.8+y/max(y)*.2), 
                     lwd = 2, color = 'dodgerblue') +
    scale_y_continuous(limits = c(0,2.2)) +
    theme_light()

Result plot

最终,ggplot的目标是增加美感(在这种情况下,是点和线段)以形成最终的图。

如果您想了解更多信息,请查看ggplot备忘单,并详细了解ggplot背后的思想:https://ggplot2.tidyverse.org/

相关问题