2009-09-25 28 views

Trả lời

36

Các ggplot cách để làm điều đó sẽ được sử dụng scale_shape_manual và cung cấp các hình dạng mong muốn trong values luận:

qplot(1:10, y, shape=b) + scale_shape_manual(values = c(0, 5, 6, 15)) 

result of above

Các hình dạng đều giống nhau như chỉ số 0-25 thông thường: http://yusung.blogspot.com/2008/11/plot-symbols-in-r.html

+1

Đây là một cách tốt hơn để làm điều đó, vì nó giữ lại huyền thoại và làm việc với đồ họa cơ sở, không phải cơ sở. Tôi tìm hiểu thêm về ggplot ở đây mỗi ngày, cảm ơn! – Vince

+0

Xin chào, làm thế nào tôi có thể thay đổi kích thước của các biểu tượng khi bạn đang sử dụng scale_shape_manual()? Tôi đã thử sử dụng geom_point (size = 4), nhưng đầu ra là hai biểu tượng (hai kích cỡ). Bất kỳ trợ giúp sẽ được đánh giá cao. – Rafael

+0

Nếu bạn đang sử dụng qplot, 'size = 4' cần phải đi bên trong cuộc gọi' qplot', chứ không phải riêng biệt. Nếu bạn thêm một 'geom_point', bạn đang tạo một lớp thứ hai một cách hiệu quả. (Điều này, ngẫu nhiên, là lý do tại sao bạn không nên sử dụng 'qplot' - nó gây nhầm lẫn.) – Harlan

6
> y <- rnorm(10) 
> b <- as.factor(sample(1:4,10,replace=T)) 
> qplot(1:10, y, shape=b) 
> qplot(1:10, y, pch=letters[1:10], cex=6) 

Đây có phải là ý của bạn không? Tôi tưởng tượng bạn có thể sử dụng bất kỳ ký tự âm mưu nào của R ...

Đây có thể không phải là cách rất 'ggplot' để làm điều này, nhưng trang người dùng đọc "Bạn có thể sử dụng nó như bạn muốn sử dụng ' chức năng cốt truyện. :-)

alt text

+0

'Lỗi: scale_shape_discrete có thể đối phó với tối đa của 6 giá trị rời rạc, nhưng bạn có 10. Xem? scale_manual cho một lựa chọn có thể' – isomorphismes

14

Để người biên soạn câu trả lời t Harlan, đây là một tài liệu tham khảo cho các hình dạng có sẵn - bắt đầu từ 0 ở phía dưới bên trái và đọc ngay sau đó lên (10Y + x):

df <- data.frame(x=c(0:129)) 
ggplot(df, aes(x=x%%10, y=floor(x/10), shape=factor(x), colour=x, size=10)) + 
    geom_point() + 
    scale_shape_manual(values=df$x) + theme(legend.position='none') + 
    scale_x_continuous(breaks=0:10) + scale_y_continuous(breaks=0:12) + 
    scale_colour_hue() + scale_colour_gradientn(colours=rainbow(3)) 

Shapes available in ggplot2

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