2016-03-22 112 views
4

我試圖控制使用GGPLOT2ggplot減少線寬傳說

示例腳本一個情節:

dat1 <- data.frame(
    sex = factor(c("Female","Female","Male","Male")), 
    time = factor(c("Lunch","Dinner","Lunch","Dinner"), levels=c("Lunch","Dinner")), 
    total_bill = c(13.53, 16.81, 16.24, 17.42) 
) 
p = ggplot(data=dat1, aes(x=sex, y=total_bill, group=time, shape=time, color=time)) + geom_line() + geom_point() 

現在我想控制其形狀和線條看起來像在圖例中。我想要一個更大的形狀,並在傳說中細線。但我無法執行這兩個。

如果我做,

p = p + guides(colour = guide_legend(override.aes = list(size=5))) 

兩個線和形狀厚,類似於圖B.

如果我做,

p = p + guides(colour = guide_legend(override.aes = list(size=5,linetype=0))) 

然後形狀出現在正確的大小,但線消失(圖A)。我嘗試了這樣的失敗。

p = p + guides(colour = guide_legend(override.aes = list(size=5,linetype=0.5))) 

Example

如何實現傳說中的一個大的形狀,且細線?

+1

據我所知,不是用普通的ggplot2命令。但有一個[看這裏](http://stackoverflow.com/questions/25007324/can-ggplot2-control-point-size-and-line-size-lineweight-separately-in-one-lege/34304453#34304453) 。 –

+2

bit of hack but ...添加一個額外的geom_point並調整alpha ...'geom_point(size = 5,alpha = 0)+ geom_point(show.legend = FALSE)+ guides(color = guide_legend(override。 aes = list(alpha = 1)))' – user20650

回答

4

謝謝Sandy Musprattuser20650。這兩個鏈接都非常有用。

爲了簡單起見,我使用user20650的代碼。

完整的代碼在這裏:

dat1 <- data.frame(
    sex = factor(c("Female","Female","Male","Male")), 
    time = factor(c("Lunch","Dinner","Lunch","Dinner"), levels=c("Lunch","Dinner")), 
    total_bill = c(13.53, 16.81, 16.24, 17.42) 
) 
p = ggplot(data=dat1, aes(x=sex, y=total_bill, group=time, shape=time, color=time)) 
p = p + geom_line() + geom_point(size=5, alpha=0) + geom_point(show.legend=FALSE) 
p = p + guides(colour = guide_legend(override.aes = list(alpha=1))) 

感謝。