簡體   English   中英

使用 ggplot 在一個圖中繪制兩個圖

[英]Two plots in one plot with ggplot

我需要用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 上苦苦掙扎,怎么辦?

這是該代碼的一種可能翻譯。

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

在此處輸入圖片說明

一般來說,使用 ggplot2,您可以通過添加附加層(geoms)將多個數據視圖添加到繪圖中

我的解決方案類似於@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()

結果圖

最終,ggplot 的目標是添加美感(在本例中為點和線段)以形成最終圖。

如果您想了解更多信息,請查看 ggplot 備忘單並閱讀更多關於 ggplot 背后的想法: https ://ggplot2.tidyverse.org/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM