2010-02-26 27 views
5

Tôi có một âm mưu (mã mẫu được dán bên dưới) mà tôi đang cố thêm nhãn riêng cho thông tin chuỗi. Thay vì vẽ "p1s1" "p1s2" "p3s4", tôi muốn "điều trị 1" "điều trị 2" "điều trị 3". Tôi đã sử dụng các cấp (series_id) để có được các tên chuỗi duy nhất và sử dụng bảng tra cứu để lấy các mô tả. (Tôi nghĩ rằng điều này được họ theo thứ tự họ được vẽ?) Và tôi có những mô tả trong một vector gọi là treatment_descriptions.Cách thêm nhãn chuỗi tùy chỉnh vào chú giải trong ggplot của R?

Từ tài liệu, tôi nghĩ rằng tôi nên sử dụng thang điểm ở đây, nhưng tôi không thể tìm ra cái nào hoặc cách thực hiện. Một cái gì đó như: scale_something (name = "Điều trị mô tả", break = NULL, nhãn = treatment_descriptions, formatter = NULL)? Nhưng nơi này nên đi đâu?

library(ggplot2) 

# Create a long data.frame to store data... 
growth_series = data.frame ("read_day" = c(0, 3, 9, 0, 3, 9, 0, 2, 8), 
"series_id" = c("p1s1", "p1s1", "p1s1", "p1s2", "p1s2", "p1s2", "p3s4", "p3s4", "p3s4"), 
"mean_od" = c(0.6, 0.9, 1.3, 0.3, 0.6, 1.0, 0.2, 0.5, 1.2), 
"sd_od" = c(0.1, 0.2, 0.2, 0.1, 0.1, 0.3, 0.04, 0.1, 0.3), 
"n_in_stat" = c(8, 8, 8, 8, 7, 5, 8, 7, 2) 
) 

> # Now gives us some example long form data... 
> > growth_series 
> read_day series_id mean_od sd_od  n_in_stat 
> 1  p1s1  0.6  0.10   8 2  
> 3  p1s1  0.9  0.20   8 3  
> 9  p1s1  1.3  0.20   8 4  
> 0  p1s2  0.3  0.10   8 5  
> 3  p1s2  0.6  0.10   7 6  
> 9  p1s2  1.0  0.30   5 7  
> 0  p3s4  0.2  0.04   8 8  
> 2  p3s4  0.5  0.10   7 9  
> 8  p3s4  1.2  0.30   2 2 

# Plot using ggplot... 
ggplot(data = growth_series, aes(x = read_day, y = mean_od, group = series_id, color = series_id)) + 
geom_line(size = 1.5) + 
geom_point(aes(size = n_in_stat)) + 
geom_errorbar(aes(ymin = mean_od - sd_od, ymax = mean_od + sd_od), size = 1, width = 0.3) + 
xlab("Days") + ylab("Log (O.D. 730 nm)") + 
scale_y_log2() + 
scale_colour_hue('my legend', breaks = levels(growth_series$series_id), labels=c('t1', 't2', 't3')) 

Trả lời

5

có thể bạn có thể gắn nhãn lại yếu tố của mình không?

growth_series$series_id <- factor(
    growth_series$series_id, 
    labels=c('treatment 1', 't2', 't3')) 

Hoặc nếu bạn vẫn đang tìm kiếm scale_something, nó phải là scale_colour_hue()

... + scale_colour_hue('my legend', 
    breaks = levels(growth_series$series_id), 
    labels=c('t1', 't2', 't3')) 
+0

Cảm ơn, gợi ý đầu tiên làm việc, thứ hai không, tôi sẽ giữ các câu hỏi mở cho bây giờ, như tôi nghĩ nên có cách tốt hơn để làm điều đó. Mô tả của tôi khá dài, vì vậy việc đặt chúng trong bàn như thế trông thật tệ, nhưng tôi đoán tôi không phải đặt chúng vào bàn cho đến trước khi tôi vẽ, vì vậy nó không phải là vấn đề lớn. Chúc mừng, John – John

+0

Điều gì sai với câu hỏi thứ hai? Nhân tiện, "..." đại diện cho nhóm ggplot() + geom_line + .. + scale_y_log2 – xiechao

+0

Chắc chắn, tôi đã thử điều đó, nhưng tôi gặp lỗi cú pháp, nó có hiệu quả với bạn không? – John

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