2010-02-26 19 views
5

Seri bilgileri için kendi etiketlerine eklemeye çalıştığım bir çizimim var (aşağıda kod örneği yapıştırılmış). "P1s1" "p1s2" "p3s4" 'ü çizmek yerine, "tedavi 1" "tedavi 2" "tedavi 3"' ü tercih ederim. Benzersiz seri isimlerini elde etmek için seviyeleri (series_id) kullandım ve açıklamaları almak için bir arama tablosu kullandım. (Bence bu, onları düzenlendikleri sırayla alırlar) ve ben de bu tanımlamaları tedavi_dizileri adı verilen bir vektörde var.R's ggplot'ta bir efsaneye özel seri etiketleri nasıl eklenir?

Dokümantasyonda burada bir ölçek kullanmam gerektiğini düşünüyorum, ancak hangisinin olduğunu veya nasıl yapılacağını anlayamıyorum. Bir şey gibi: scale_something (name = "Tedavi Açıklamaları", breakks = NULL, label = treatment_descriptions, formatter = NULL)? Ama bu nereye gitmeli?

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')) 

cevap

5

Faktörünüzü yeniden etiketleyebilir misiniz?

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

yoksa hala scale_something arıyorsanız, olması gerektiği scale_colour_hue()

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

sayesinde ilk öneri çalıştı, şimdi açık bir soru tutacağız vermedi ikinci, Bence bunu yapmanın daha iyi bir yolu olmalı. Tanımlarım oldukça uzun, bu yüzden tablodaki gibi olmak gerçekten çirkin görünüyor, ama sanırım ben arsadan hemen önce masaya koymak zorunda değilim, bu yüzden büyük bir anlaşma değil. Şerefe, John – John

+0

İkincisinin nesi var? Bu arada, "...", ggplot() + geom_line + .. grubunuzu temsil eder. + Scale_y_log2 – xiechao

+0

Elbette, bunu denedim ama bir sözdizimi hatası alıyorum, bu sizin için işe yarıyor mu? – John

İlgili konular