2012-05-26 34 views
5

Tôi có một câu hỏi liên quan đến một kết quả lạ đối với một âm mưu đường sử dụng các khía cạnh. Tôi có masurements dữ liệu nước cho độ sâu khác nhau (= áp lực). Các số liệu được đưa ra khi một bảng như vậy:ggplot2 cốt truyện đường có các khu vực của dòng đầy màu sắc rắn, tại sao?

Pressure Temperature pH 
0  30   8.1 
1  28   8.0 

tôi "tan chảy" dữ liệu này để sản lượng:

Pressure variable value 
0  Temperature 30 
1  Temperature 30 
0  pH   8.1 
1  pH   8.0 

và vân vân. Bây giờ tôi vẽ đồ thị này:

ggplot(data.m.df, aes(x=value, y=Pressure)) + 
    facet_grid(.~variable, scale = "free") + 
    scale_y_reverse() + 
    geom_line() + 
    opts(axis.title.x=theme_blank()) 

Nó hoạt động, ngoại trừ có một phần của cốt truyện có màu đồng nhất. Tôi không có ý tưởng tại sao, đặc biệt là bởi vì nó hoạt động tốt nếu tôi trao đổi x cho y và sử dụng "biến ~." như công thức facet_grid. weird plot

+2

'geom_line' kết nối quan sát ra lệnh bởi các giá trị x. Tùy thuộc vào cách dữ liệu của bạn được tổ chức, 'geom_path' có thể hoạt động. –

+0

Cảm ơn, geom_path hoạt động. Tôi vẫn không hiểu lắm, nhưng tôi sẽ xem xét sự khác biệt. Một, tôi đoán vấn đề liên quan mà không được giải quyết bằng cách sử dụng geom_path là thêm một dòng với stat_smooth cho kết quả lạ, quá. – ShellfishGene

Trả lời

10

Lưu ý sự khác biệt giữa geom_linegeom_path được áp dụng cho cùng một dữ liệu.

library(ggplot2) 

x = c(seq(1, 10, 1), seq(10, 1, -1)) 
y = seq(0, 19, 1) 
df = data.frame(x, y) 

ggplot(df, aes(x, y)) + geom_line() 
ggplot(df, aes(x, y)) + geom_path() 

enter image description here

Lưu ý thứ tự trong khung df dữ liệu.

x y 
1 1 0 
2 2 1 
3 3 2 
4 4 3 
5 5 4 
6 6 5 
7 7 6 
8 8 7 
9 9 8 
10 10 9 
11 10 10 
12 9 11 
13 8 12 
14 7 13 
15 6 14 
16 5 15 
17 4 16 
18 3 17 
19 2 18 
20 1 19 

geom_path lô theo thứ tự các quan sát.

geom_line lô theo thứ tự các giá trị x.

Hiệu ứng được đánh dấu nhiều hơn khi giá trị x gần nhau hơn.

x = c(seq(1, 10, .01), seq(10, 1, -.01)) 
y = seq(.99, 19, .01) 
df = data.frame(x, y) 

ggplot(df, aes(x, y)) + geom_line() 
ggplot(df, aes(x, y)) + geom_path() 

enter image description here

+0

Cảm ơn lời giải thích tuyệt vời! Bây giờ đã rõ rồi. – ShellfishGene

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