2015-12-13 32 views
-2

我tbl_df:刪除一個水平/組從Facet_wrap GGPLOT2 R中

ggplot(p2p_dt_SKILL_A,aes(x=Date,y=Prod_DL)) + 
     geom_line(data = p2p_dt_SKILL_A[p2p_dt_SKILL_A$Patch %in% c("BVG1"),],aes(colour="red"),lwd=1.3) + 
     geom_smooth() + 
     scale_x_date(labels=date_format("%b-%y"),breaks ="1 month")+ 
     geom_vline(xintercept = as.numeric(p2p_dt_SKILL_A$Date[p2p_dt_SKILL_A$Date=="2015-09-18"]))+ 
     geom_vline(xintercept = as.numeric(p2p_dt_SKILL_A$Date[p2p_dt_SKILL_A$Date=="2015-10-02"]))+ 
     geom_vline(xintercept = as.numeric(p2p_dt_SKILL_A$Date[p2p_dt_SKILL_A$Date=="2015-10-23"]))+ 
     theme(axis.title.y = element_text(size = 15,face="bold",color="red"), 
       plot.title = element_text(size = 15,lineheight = .8,face="bold",color="red"), 
       axis.title.x = element_blank(), 
       legend.position="none") 

enter image description here

現在我試圖用facet_wrap

> str(p2p_dt_SKILL_A) 
Classes ‘tbl_dt’, ‘tbl’, ‘data.table’ and 'data.frame': 693 obs. of 35 variables: 
$ Patch   : Factor w/ 7 levels "BVG1","BVG11",..: 1 2 3 4 5 6 7 1 2 3 ... 
$ Skill   : Factor w/ 15 levels "A","BROADBAND",..: 1 1 1 1 1 1 1 1 1 1 ... 
$ Date   : Date, format: "2015-12-04" "2015-12-04" "2015-12-04" "2015-12-04" ... 
$ SOD_FWIH_A  : num 1.09 1.14 1.09 1.1 1.09 1.07 1.09 1.07 1.12 1.07 ... 
$ Prod_MWF  : num 5.06 5.06 5.44 5.34 4.22 4.72 4.89 4.68 4.68 5.22 ... 
$ Prod_MA  : num 4.41 4.41 4.81 4.41 4.68 4.15 4.26 4.44 4.44 4.63 ... 
$ Prod_DL  : num 3.43 3.49 3.45 3.57 3.43 3.47 3.28 3.44 3.42 3.72 ... 

使用GGPLOT2創建以下線圖但沒有"BVG1" Patch。但facet_wrap拿起BVG1補丁以及:

ggplot(p2p_dt_SKILL_A,aes(x=Date,y=Prod_DL)) + 
     geom_line(data = p2p_dt_SKILL_A[p2p_dt_SKILL_A$Patch != "BVG1",],aes(colour="red"),lwd=1.3) + 
     scale_colour_discrete(drop = FALSE)+ 
     geom_smooth() + 
     geom_line(stat = "hline", yintercept = "mean")+ 
     scale_x_date(labels=date_format("%b-%y"),breaks ="2 month")+ 
     geom_vline(xintercept = as.numeric(p2p_dt_SKILL_A$Date[p2p_dt_SKILL_A$Date=="2015-09-18"]))+ 

     geom_vline(xintercept = as.numeric(p2p_dt_SKILL_A$Date[p2p_dt_SKILL_A$Date=="2015-10-02"]))+ 
     geom_vline(xintercept = as.numeric(p2p_dt_SKILL_A$Date[p2p_dt_SKILL_A$Date=="2015-10-23"]))+ 
     ylab("DL Prod for All Skills")+ 
     ggtitle("BVG1 DL Prod for All Skills 2014-2015")+ 
     theme(axis.title.y = element_text(size = 15,face="bold",color="red"), 
       plot.title = element_text(size = 15,lineheight = .8,face="bold",color="red"), 
       axis.title.x = element_blank(), 
       legend.position="none")+ 
     facet_wrap(~Patch, ncol = 3) 

enter image description here

如何獲得facet_wrap只是從BVG11打印到BVG16和排除BVG1組?

我試圖用一個新的數據幀不包括BVG1但它不能很好地打印和線條都在喜歡的地方:用上述新創建的數據幀

som_data <- p2p_dt %>% 
         filter(Patch != "BVG1" & Skill %in% c("A")) 

> str(som_data) 
Classes ‘tbl_dt’, ‘tbl’, ‘data.table’ and 'data.frame': 594 obs. of 39 variables: 
$ Patch   : Factor w/ 6 levels "BVG11","BVG12",..: 1 2 3 4 5 6 1 2 3 4 ... 
$ Skill   : Factor w/ 1 level "A": 1 1 1 1 1 1 1 1 1 1 ... 
$ Date   : Date, format: "2015-12-04" "2015-11-27" "2015-11-20" "2015-11-13" ... 
$ SOD_FWIH_A  : num 1.14 1.12 1.15 1.09 1.13 1.14 1.15 1.16 1.14 1.11 ... 
$ Prod_MWF  : num 5.06 4.68 4.69 4.76 4.63 4.98 4.45 5.12 4.44 4.54 ... 
$ Prod_MA  : num 4.41 4.44 4.14 5.63 4.86 4.97 4.65 4.99 4.52 4.9 ... 
$ Prod_DL  : num 3.49 3.42 3.6 3.29 3.19 3.1 3.18 3.28 3.26 3.21 ... 

,它會創建下列圖形和手段也不正確

ggplot(som_data,aes(x=Date,y=Prod_DL)) + 
     geom_line(aes(colour="red"),lwd=1.3) + 
     geom_smooth() + 
     geom_line(stat = "hline", yintercept = "mean")+ 
     scale_x_date(labels=date_format("%b-%y"),breaks ="2 month")+ 
     geom_vline(xintercept = as.numeric(som_data$Date[som_data$Date=="2015-09-18"]))+ 
     geom_vline(xintercept = as.numeric(som_data$Date[som_data$Date=="2015-10-02"]))+ 
     geom_vline(xintercept = as.numeric(som_data$Date[som_data$Date=="2015-10-23"]))+ 
     ylab("DL Prod for All Skills")+ 
     ggtitle("BVG1 SOMs DL Prod for All Skills 2014-2015")+ 
     theme(axis.title.y = element_text(size = 15,face="bold",color="red"), 
       plot.title = element_text(size = 15,lineheight = .8,face="bold",color="red"), 
       axis.title.x = element_blank(), 
       legend.position="none")+ 
     facet_wrap(~Patch) 

enter image description here

任何想法?

+1

也許你可以用'droplevels' –

+0

爲什麼不使用'som_data?< - p2p_dt_SKILL_A%>(!補丁= 「BVG1」)%過濾'然後也許'p2p_dt_SKILL_A < - droplevels(p2p_dt_SKILL_A)' 。 – Axeman

+1

在你的第一個數據集技能有15個級別在你的第二,它只有1級 – MLavoie

回答

2

我看不出問題所在。這是您提供的數據的一個最小例子。

library(dplyr) 
# I first need to get rid of the data.table 
sample_data <- as.data.frame(sample_data) 
# I don't want all those other variables you gave me either.. 
sample_data <- select(sample_data, Date, Prod_DL, Patch) 

# Now filter out the Patch that we don't want 
sample_data2 <- filter(sample_data, Patch != "BVG1") 

# Create a minimal plot 
ggplot(sample_data2, aes(x = Date, y = Prod_DL)) + 
    geom_line(colour="red", lwd = 1.3) + 
    geom_smooth() + 
    facet_wrap(~Patch, ncol = 3) 

不完全是一個偉大的情節(有限的數據),但只有六個面板。

enter image description here

+0

其有趣,但我已經解決了這個問題。我沒有做任何特別的事情,只需重新運行命令就行了!但感謝您的努力:) – Shery

+2

請下次再做一個可重複使用的例子,以便您能夠發現任何錯誤。 – Axeman