2011-12-05 44 views
15

Tôi tạo một đồ họa với một vài nhóm và vẽ một geom_boxplot() trên một dòng của dòng. Tuy nhiên, nó sẽ là tốt đẹp để tô màu hộp một cách minh bạch để các dòng có thể được nhìn thấy.tạo ô với màu trong suốt ggplot2

Dưới đây là một số dữ liệu mẫu:

x11() 

name <- c("a", "a", "a", "a", "a", "a","a", "a", "a", "b", "b", "b","b", "b", "b","b", "b", "b") 
class <- c("c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3","c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3") 
year <- c("2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008") 
value <- c(100, 33, 80, 90, 80, 100, 100, 90, 80, 90, 80, 100, 100, 90, 80, 99, 80, 100) 

df <- data.frame(name, class, year, value) 
df 

Tôi vẽ đồ họa với:

p1 <- ggplot(df, aes(year, value)) 
p1 <- p1 + geom_line(aes(group=name, size=name),colour="#ff2300",alpha=0.5) +  facet_wrap(~ class, scales = "free_y") 
p1 <- p1 + geom_boxplot(aes(group=name)) 
print(p1) 

Và trên hệ thống của tôi chiều rộng dòng trong truyền thuyết không được hiển thị một cách chính xác. Tôi có làm điều gì sai? Cảm ơn trước!

+0

Điều gì sẽ xảy ra nếu bạn vẽ các đường thẳng sau khung hình, điều đó có hợp lý không? –

+0

Ít nhất là đối với các công cụ cốt truyện R cơ bản, việc thiết lập màu với 2 chữ số phụ xác định độ trong suốt. Ví dụ. '# FF230033' trong đó độ trong suốt chạy từ 00 đến FF. –

Trả lời

25

Bạn có thể thêm đối số alpha vào hộp của bạn. Ví dụ:

geom_boxplot(aes(group=name), alpha = 0.8)

sẽ cung cấp cho bạn

enter image description here

+0

chắc chắn - cách rõ ràng nhất! cảm ơn bạn! – Seb

5

Thay đổi thứ tự của các geoms để vẽ boxplot đầu tiên và sau đó các dòng. Tuy nhiên tôi không nghĩ rằng đồ thị của bạn có ý nghĩa. Tại sao bạn sử dụng tên để thay đổi kích thước của dòng? Nó sẽ không có ý nghĩa hơn để thay đổi linetype? Và tôi khuyên chống lại free_y trong các khía cạnh vì nó làm cho nó khó so sánh.

name <- c("a", "a", "a", "a", "a", "a","a", "a", "a", "b", "b", "b","b", "b", "b","b", "b", "b") 
class <- c("c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3","c1", "c1", "c1", "c2", "c2", "c2", "c3", "c3", "c3") 
year <- c("2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008", "2010", "2009", "2008") 
value <- c(100, 33, 80, 90, 80, 100, 100, 90, 80, 90, 80, 100, 100, 90, 80, 99, 80, 100) 

df <- data.frame(name, class, year, value) 
df 
library(ggplot2) 
p1 <- ggplot(df, aes(year, value)) 
p1 <- p1 + geom_boxplot(aes(group=name)) + geom_line(aes(group=name, size=name),colour="#ff2300",alpha=0.5) + 
    facet_wrap(~ class, scales = "free_y") 
+0

+1 để cảnh báo về 'free_y'. May mắn thay, nền của ggplot cảnh báo rằng các vảy không thể so sánh giữa các mặt. –

+0

Xin chào, cảm ơn vì gợi ý. Vâng bạn đã đúng. biểu đồ không có ý nghĩa nhiều! đặc biệt là các đối số kích thước đường chỉ là một cái gì đó tôi đã cố gắng cho vui - không nên có nó được đăng theo cách đó. liên quan đến đối số 'free_y': dữ liệu gốc chứa các lớp về các loại bất động sản khác nhau mà hầu như không thể so sánh (ví dụ: giá thuê so với giá) vì vậy tôi nghĩ điều đó là ổn. – Seb

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