2012-06-03 23 views
3

我有类似这样的一个情节:调整一号线的线型在facet_grid

b <- data.frame(x=c(1,2,3,1,2,3,1,2,3,1,2,3),y=c(1,2,3,1.5,1.9,2.5,3,2,1,2.9,1.8,1.5),c=c("1","1","1","2","2","2","1","1","1","2","2","2"),f=c("b","b","b","b","b","b","a","a","a","a","a","a")) 
ggplot(b,aes(x=x,y=y,color=c,group=c))+geom_line()+facet_grid(f ~ .) 

现在我想仅在上面线“1”,“一”是厚和破灭。这可能吗?

回答

7

你将要学习的第一件也是最重要的事情之一ggplot2是当你想让某件事出现在你的情节中时,你一般会在你的数据框中创建一个代表您希望显示的视觉信息。

在你的情况,你需要挑选出仅从面板的观察变量,第1行:

b$grp <- with(b,(f == "a") & (c == 1)) 

然后,你可以映射既sizelinetype这个变量,并手动调整尺度:

library(scales) 
ggplot(b,aes(x=x,y=y)) + 
    geom_line(aes(color=c,group=c,size = grp,linetype = grp)) + 
    facet_grid(f ~ .) + 
    scale_size_manual(values = c(0.5,1.2),guide = "none") + 
    scale_linetype_manual(values = c('solid','dashed'),guide = "none") 
+0

感谢您的提示与data.frame扩展名。我想尝试一下,因为很多情况下没有必要(http://stackoverflow.com/a/8408068/354018),但也许这次确实是这样。 – fabb

+0

我想你不需要'library(scales)',但是'library(ggplot2)'。 – fabb