2016-06-14 80 views
2

我有以下data.frame:具有不同x軸線多個圖形蜱

ef2 <- data.frame(X1=c(50,100,'bb','aa'), X2=c('A','A','B','B'), value=c(1,4,3,6))

我想創建兩個圖,一個用於每個組中的X2。

下面是代碼我並獲得了劇情:

ggplot(data=ef2, aes(x=X1, y=value, group=X2)) + 
    facet_grid(.~X2, scales="free_x") + 
    geom_line(size=1) + 
    geom_point(size=3) + 
    xlab('') + 
    ylab('Y') 

enter image description here

的問題是,X軸是按字母順序排列,我不知道如何解決它。我曾嘗試添加scale_x_discrete,但我不知道如何區分組。你可以看到我獲得下面的鏈接將這個參數添加的情節:

ggplot(data=ef2, aes(x=X1, y=value, group=X2)) + 
    facet_grid(.~X2, scales="free_x") + 
    geom_line(size=1) + 
    geom_point(size=3) + 
    xlab('') + 
    ylab('Y') + 
    scale_x_discrete(limits=ef2$X1) 

enter image description here

編輯:我不能改變EF2 data.frame。我試過在另一個data.frame的訂購因素:

ef2 <- data.frame(X1=c(50,100,'bb','aa'), X2=c('A','A','B','B'), value=c(1,4,3,6)) 
ef2$X1 <- as.character(ef2$X1) 
nou <- data.frame(X1=factor(ef2$X1), levels=ef2$X1, X2=ef2$X2, value=ef2$value) 

但它不起作用。

+0

谷歌「ggplot訂單因子水平」,你會發現很多關於這個主題的其他職位。 – Henrik

+0

我的問題不在於訂購因子水平。我的問題是如何使用我的data.frame創建另一個有序的因素。 – Marta

回答

0

這爲我工作,但我不知道這是否正是你所需要的:自動Avoid ggplot sorting the x-axis while plotting geom_bar() ggplot訂單,除非你提供一個已經orderd因素:

ef2 <- data.frame(X1=factor(c('50','100','bb','aa'), levels = c('50','100','bb','aa')), X2=c('A','A','B','B'), value=c(1,4,3,6)) 

ggplot(data=ef2, aes(x=X1, y=value, group=X2)) + 
    facet_grid(.~X2, scales="free_x") + 
    geom_line(size=1) + 
    geom_point(size=3) + 
    xlab('') + 
    ylab('Y') 

enter image description here

根據這個帖子。

更新:

您使用的代碼有錯誤。 levelsfactor函數的一個參數。 試試這個:

ef2 <- data.frame(X1=c(50,100,'bb','aa'), X2=c('A','A','B','B'), value=c(1,4,3,6)) 
ef2$X1 <- factor(ef2$X1, levels = unique(ef2$X1)) 
+0

非常感謝您的回答!問題是我無法更改ef2 data.frame。我嘗試創建一個新的:'ef2 < - data.frame(X1 = c(50,100,'bb','aa'),X2 = c('A','A','B',' B'),value = c(1,4,3,6))ef2 $ X1 < - as.character(ef2 $ X1)nou < - data.frame(X1 = factor(ef2 $ X1),levels = ef2 $ X1,X2 = ef2 $ X2,value = ef2 $ value)'但它不起作用 – Marta

+0

完美,謝謝! – Marta