2012-08-30 43 views
7

tôi có thể vẽ từng loạt trong một màu sắc khác nhau trong ggplot2 bằng cách làm một cái gì đó như thế này ...ggplot - dòng thay đổi chiều rộng

colours <- c('red', 'blue') 
p <- ggplot(data=m, mapping=aes_string(x='Date', y='value')) 
p <- p + geom_line(mapping=aes_string(group='variable', colour='variable'), size=0.8) 
p <- p + scale_colour_manual(values=colours) 

Có một cái gì đó có thể so sánh tôi có thể làm gì để thiết lập độ rộng dòng khác nhau cho mỗi loạt? (Ví dụ. Tôi muốn sử dụng một dòng màu đỏ dày để vẽ xu hướng và một dòng màu xanh mỏng để âm mưu loạt điều chỉnh theo mùa.)

+2

Bạn có thể 'dput' dữ liệu của bạn ('m')? – seancarmody

Trả lời

11

tôi sẽ chỉ cần thêm một biến số mới vào khung dữ liệu của bạn

##You will need to change this to something more appropriate 
##Something like: 
##m$size = as.numeric(m$variable == "seasonal") 
m$size = rep(c(0, 1), each=10) 

sau đó thêm một thẩm mỹ kích thước để lệnh cốt truyện của bạn:

p = p + geom_line(aes(group=variable, colour=variable, size=size)) 
##Set the size scale 
p + scale_size(range=c(0.1, 2), guide=FALSE) 

Chú ý rằng tôi đã thêm guide=FALSE để tránh những huyền thoại kích thước được hiển thị.

+0

Làm cách nào để làm điều ngược lại? Tôi muốn làm cho dòng trong truyền thuyết được dày hơn, nhưng để lại dòng trên cốt truyện mỏng. – baltazar

+0

Có lẽ bạn đang đặt câu hỏi mới nhất là – csgillespie

+0

http://tackoverflow.com/q/16356052/258421 – baltazar

5

Bạn có thể làm điều đó thích:

x <- 1:10 
y1 <- x 
y2 <- 1.5*x 
df <- data.frame(x=rep(x, 2), y=c(y1, y2), id=as.factor(rep(1:2, each=10))) 
ggplot(df) + geom_line(aes(x=x,y=y,group=id, colour=id, size=id)) + 
scale_size_manual(values=c(1,4)) 
+0

'scale_size_manual' là một tính năng thực sự hữu ích –

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