【问题标题】:Subset Data for ggplot2 graphggplot2 图的子集数据
【发布时间】:2018-05-22 21:31:03
【问题描述】:

我正在使用 ggplot2,并且有一个关于如何对绘图数据进行子集化的问题。 我有以下数据集(示例),需要按 A 公司的年份创建比较 Q1 数据的线图。

x= 2015 年第一季度、2016 年第一季度、2017 年第一季度 y= 公司 A 的数据

Company Year    Quarter Data
A       2015    Q1  1
B       2015    Q1  2
C       2015    Q1  3
A       2015    Q2  4
B       2015    Q2  5
C       2015    Q2  6
A       2015    Q3  7
B       2015    Q3  8
C       2015    Q3  9
A       2016    Q1  10
B       2016    Q1  11
C       2016    Q1  12
A       2016    Q2  13
B       2016    Q2  14
C       2016    Q2  15
A       2016    Q3  17
B       2016    Q3  18
C       2016    Q3  19

对于该项目中涉及的其他图表,我一直在使用此代码:

ggplot(df[df$Company=="A",], aes(x=   , y=   , group=1)) +
  geom_line(color='steelblue', size=2) + geom_point(aes(color=Company))+
  xlab("Q1 by Year") +
  ylab("Data") + theme_minimal(base_size=12)+
  ggtitle("  ")+
  theme(plot.title=element_text(hjust=0.5, size=16, face="bold"))+
  theme(axis.text.x=element_text(size=10, vjust=0.5, color="black", face="bold"),
        axis.text.y=element_text(size=10, vjust=0.5, color="black", face="bold"),
        axis.title.x=element_text(size=13, face="bold"),
        axis.title.y=element_text(size=13, face="bold"))+
  theme(aspect.ratio=3/4) + scale_color_brewer(palette="Set2") + 
  theme(legend.position="none")

关于如何为我需要的图表对这些数据进行子集化有什么建议吗?这是我最挣扎的事情之一。任何帮助,将不胜感激!谢谢!

【问题讨论】:

    标签: r ggplot2 dplyr line subset


    【解决方案1】:

    您可以使用dplyr 包中的filter 对所需数据进行子集化

    library(tidyverse)
    
    df <- read.table(text = "Company Year    Quarter Data
                                A       2015    Q1  1
                                B       2015    Q1  2
                                C       2015    Q1  3
                                A       2015    Q2  4
                                B       2015    Q2  5
                                C       2015    Q2  6
                                A       2015    Q3  7
                                B       2015    Q3  8
                                C       2015    Q3  9
                                A       2016    Q1  10
                                B       2016    Q1  11
                                C       2016    Q1  12
                                A       2016    Q2  13
                                B       2016    Q2  14
                                C       2016    Q2  15
                                A       2016    Q3  17
                                B       2016    Q3  18
                                C       2016    Q3  19",
                     header = TRUE, stringsAsFactors = FALSE)
    
    # subset data
    df_select <- df %>% 
      filter(Company == "A" & Quarter == "Q1")
    df_select
    
    #>   Company Year Quarter Data
    #> 1       A 2015      Q1    1
    #> 2       A 2016      Q1   10
    
    ggplot(df_select, aes(x=Year, y=Data, group=1)) +
      geom_line(color='steelblue', size=2) + geom_point(aes(color=Company))+
      xlab("Q1 by Year") +
      ylab("Data") + theme_minimal(base_size=12)+
      ggtitle("  ")+
      theme(plot.title=element_text(hjust=0.5, size=16, face="bold"))+
      theme(axis.text.x=element_text(size=10, vjust=0.5, color="black", face="bold"),
            axis.text.y=element_text(size=10, vjust=0.5, color="black", face="bold"),
            axis.title.x=element_text(size=13, face="bold"),
            axis.title.y=element_text(size=13, face="bold"))+
      theme(aspect.ratio=3/4) + scale_color_brewer(palette="Set2") + 
      theme(legend.position="none")
    

    reprex package (v0.2.0) 于 2018 年 5 月 22 日创建。

    【讨论】:

    • 非常感谢!这非常有帮助!
    猜你喜欢
    • 2021-06-09
    • 1970-01-01
    • 2023-04-11
    • 2013-08-12
    • 2016-11-27
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 2015-12-23
    相关资源
    最近更新 更多