2013-05-03 33 views
61

Tôi đang âm mưu dòng với ggplot2 như thế này:kiểm soát ggplot2 huyền thoại nhìn mà không ảnh hưởng cốt truyện

ggplot(iris, aes(Petal.Width,Petal.Length,color=Species)) + geom_line() + theme_bw() 

current plot.

Tôi thấy dấu huyền thoại là nhỏ nên tôi muốn chúng lớn hơn. Nếu tôi thay đổi kích thước, các dòng trên ô cũng thay đổi:

ggplot(iris, aes(Petal.Width,Petal.Length,color=Species)) + geom_line(size=4) + theme_bw() 

thick plot lines.

Nhưng tôi chỉ muốn thấy những đường nét dày trong truyền thuyết, tôi muốn các dòng trên cốt truyện mỏng. Tôi cố gắng để sử dụng legend.key.size nhưng nó thay đổi bậc hai của nhãn hiệu, không phải là chiều rộng của đường:

library(grid) # for unit 
ggplot(iris,aes(Petal.Width,Petal.Length,color=Species))+geom_line()+theme_bw() + theme(legend.key.size=unit(1,"cm")) 

big legend keys

Tôi cũng cố gắng sử dụng điểm:

ggplot(iris,aes(Petal.Width,Petal.Length,color=Species)) + geom_line() + geom_point(size=4) + theme_bw() 

Nhưng tất nhiên nó vẫn ảnh hưởng đến cả cốt truyện và chú thích:

points

Tôi muốn sử dụng các đường cho cốt truyện và dấu chấm/điểm cho chú giải.

Vì vậy, tôi hỏi về hai điều:

  1. Làm thế nào để thay đổi độ rộng của dòng trong huyền thoại mà không thay đổi cốt truyện?
  2. Làm cách nào để vẽ các đường trong ô, nhưng vẽ các điểm/chấm/hình vuông trong chú giải?

Trả lời

92

Để thay đổi dòng chiều rộng chỉ trong truyền thuyết, bạn nên sử dụng chức năng guides() và sau đó cho colour= sử dụng guide_legend() với override.aes= và thiết lập size=. Điều này sẽ ghi đè kích thước được sử dụng trong cốt truyện và sẽ sử dụng giá trị kích thước mới chỉ dành cho chú giải.

ggplot(iris,aes(Petal.Width,Petal.Length,color=Species))+geom_line()+theme_bw()+ 
     guides(colour = guide_legend(override.aes = list(size=3))) 

enter image description here

Để có được điểm trong huyền thoại và dòng trong cốt truyện workaround sẽ thêm geom_point(size=0) để đảm bảo rằng các điểm đang ẩn danh và sau đó trong guides() thiết linetype=0 để loại bỏ dòng và size=3 để có được điểm lớn hơn.

ggplot(iris,aes(Petal.Width,Petal.Length,color=Species))+geom_line()+theme_bw()+ 
     geom_point(size=0)+ 
     guides(colour = guide_legend(override.aes = list(size=3,linetype=0))) 

enter image description here

+0

Awesome, cảm ơn! Đó là những gì tôi cần! Bất kỳ cơ hội nào trả lời câu hỏi thứ hai của tôi? – baltazar

+0

Cập nhật câu trả lời của tôi –

+2

Điều này có thể được đặt trong một chủ đề không? – nate

Các vấn đề liên quan