【问题标题】:Visualization with common X-axis [duplicate]使用通用 X 轴进行可视化 [重复]
【发布时间】:2020-08-12 14:33:01
【问题描述】:

假设我有以下数据集:

a   b   a_lag  b_lag   
10  30  0       0      
12  25  1       0      
20  55  2       0      
16  37  1       1     
24  60  2       1      
19  50  2       2       

我希望将 A 和 B(每个颜色不同)针对同一图上的相应轴 A_lags 和 B_lags 绘制。如果我们只有一个 x 轴(上例中的滞后),我发现这对 ggplot 非常简单,A 和 B 共有。但是,A(A_lags) 和 B(B_lags) 分别有不同的滞后。但滞后与整数 0,1 和 2 非常相似。谁能告诉我如何在 Rstudio 上绘制 A 和 B 与“共同滞后” - 0、1 和 2 的关系?

【问题讨论】:

    标签: r ggplot2 visualization axes multiple-axes


    【解决方案1】:

    第一步是将您的数据放入Tidy Data format,以便它可以很好地与ggplot2 一起绘图。最后,您似乎只是想针对单个“公共滞后”轴绘制 A 和 B 值(分别在 ab 列中)。因此,您可以意识到您的数据集实际上是由一个数据框组成的,其中您有各自的 x 和 y 列,这两个系列“A”和“B”的名称不同。将两个数据集分开,重新标记列,然后重新组合是最简单的。我将使用dplyrtidyr 来执行此操作,但也有一些包具有类似功能。

    (注意:假设您的数据框 = df)。

    library(dplyr)
    library(tidyr)
    library(ggplot2)
    
    # separate out the data
    df_a <- df %>% select(a, a_lag)
    df_b <- df %>% select(b, b_lag)
    
    # rename the columns to correspond to y and x axis
    names(df_a) <- c('value', 'lag')
    names(df_b) <- c('value', 'lag')
    
    # include a new column to identify the series for the data
    df_a$series <- 'A'
    df_b$series <- 'B'
    
    # combine and plot
    new_df <- rbind(df_a, df_b)
    ggplot(new_df,aes(x=lag, y=value, color=series)) + geom_point(size=2) + theme_bw()
    

    我希望通过 cmets 很清楚代码的情况。 OP 并未具体说明想要的绘图类型,但您应该能够从 new_df 数据集创建任何绘图。

    【讨论】:

    • 非常感谢。很抱歉我不清楚我要求的那种情节。但这正是我想要的。在查看您的答案之前,我觉得我必须将其组织为一个因素或使用 group by。但你的答案更直观。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 2011-10-20
    • 2019-06-11
    • 2019-10-13
    相关资源
    最近更新 更多