2016-06-14 79 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