SORU
27 NİSAN 2012, Cuma


Ggplot2 çizgi çizmek için efsane Ekle

Ggplot2 efsaneleri hakkında bir sorum var. Aynı grafikte üç çizgiler çizmek başardım ve üç renk kullanılan bir efsane eklemek istiyorum. Bu kod kullanılır

library(ggplot2)    
require(RCurl)

link<-getURL("https://dl.dropbox.com/s/ds5zp9jonznpuwb/dat.txt")
datos<- read.csv(textConnection(link),header=TRUE,sep=";")
datos$fecha <- as.POSIXct(datos[,1], format="%d/%m/%Y")    

temp = ggplot(data=datos,aes(x=fecha, y=TempMax,colour="1"))   
           geom_line(colour="red")   opts(title="TITULO")  
           ylab("Temperatura (C)")   xlab(" ")   
           scale_y_continuous(limits = c(-10,40))   
           geom_line(aes(x=fecha, y=TempMedia,colour="2"),colour="green")   
           geom_line(aes(x=fecha, y=TempMin,colour="2"),colour="blue")  
           scale_colour_manual(values=c("red","green","blue"))

temp

ve çıktı

ggplot three lines

Üç renk kullanılmış ve değişken adı ile bir efsane eklemek için (TempMax,TempMedia ve TempMin) istiyorum. Denedim

scale_colour_manual

ama kesin bir yol bulamadım.

Ne yazık ki orijinal veri bağlantılı siteden silinmiş ve kurtarılan olamazdı. Ama bu biçimi ile hava veri dosyaları geldiler

"date","Tmax","Tmin","Tmed","Precip.diaria","Wmax","Wmed"
2000-07-31 00:00:00,-1.7,-1.7,-1.7,-99.9,20.4,20.4
2000-08-01 00:00:00,22.9,19,21.11,-99.9,6.3,2.83
2000-08-03 00:00:00,24.8,12.3,19.23,-99.9,6.8,3.87
2000-08-04 00:00:00,20.3,9.4,14.4,-99.9,8.3,5.29
2000-08-08 00:00:00,25.7,14.4,19.5,-99.9,7.9,3.22
2000-08-09 00:00:00,29.8,16.2,22.14,-99.9,8.5,3.27
2000-08-10 00:00:00,30,17.8,23.5,-99.9,7.7,3.61
2000-08-11 00:00:00,27.5,17,22.68,-99.9,8.8,3.85
2000-08-12 00:00:00,24,13.3,17.32,-99.9,8.4,3.49

CEVAP
27 NİSAN 2012, Cuma


Beri @Etienne sordu nasıl bu olmadan erime verileri (genel tercih edilen yöntem, ama tanıdım olabilir bazı durumlarda bu mümkün değildir), şu aşağıdaki alternatif.

Orijinal veri kümesi ile başlar:

datos <-
structure(list(fecha = structure(c(1317452400, 1317538800, 1317625200, 
1317711600, 1317798000, 1317884400, 1317970800, 1318057200, 1318143600, 
1318230000, 1318316400, 1318402800, 1318489200, 1318575600, 1318662000, 
1318748400, 1318834800, 1318921200, 1319007600, 1319094000), class = c("POSIXct", 
"POSIXt"), tzone = ""), TempMax = c(26.58, 27.78, 27.9, 27.44, 
30.9, 30.44, 27.57, 25.71, 25.98, 26.84, 33.58, 30.7, 31.3, 27.18, 
26.58, 26.18, 25.19, 24.19, 27.65, 23.92), TempMedia = c(22.88, 
22.87, 22.41, 21.63, 22.43, 22.29, 21.89, 20.52, 19.71, 20.73, 
23.51, 23.13, 22.95, 21.95, 21.91, 20.72, 20.45, 19.42, 19.97, 
19.61), TempMin = c(19.34, 19.14, 18.34, 17.49, 16.75, 16.75, 
16.88, 16.82, 14.82, 16.01, 16.88, 17.55, 16.75, 17.22, 19.01, 
16.95, 17.55, 15.21, 14.22, 16.42)), .Names = c("fecha", "TempMax", 
"TempMedia", "TempMin"), row.names = c(NA, 20L), class = "data.frame")

İstenen etkiyi (ve bu da orijinal çizim kodu temizler) alabilirsiniz:

ggplot(data = datos, aes(x = fecha))  
  geom_line(aes(y = TempMax, colour = "TempMax"))  
  geom_line(aes(y = TempMedia, colour = "TempMedia"))  
  geom_line(aes(y = TempMin, colour = "TempMin"))  
  scale_colour_manual("", 
                      breaks = c("TempMax", "TempMedia", "TempMin"),
                      values = c("red", "green", "blue"))  
  xlab(" ")  
  scale_y_continuous("Temperatura (C)", limits = c(-10,40))   
  labs(title="TITULO")

Fikir her satırın sabit bir dize için colour estetik eşleyerek bir renk verilir. Efsane görünmesini istediğiniz nedir, string seçme kolay olur. Bu durumda y değişken çizilen ismiyle aynı olması önemli değildir; dizeleri bir dizi olabilir. Bu aes çağrı içinde çok önemlidir; Bu bir eşleme oluşturma"". değişken

scale_colour_manual şimdi uygun renkler için bu dizeleri göster. Sonuç enter image description here

Bazı durumlarda, seviyeler ve renkler arasında eşleştirme açık manuel ölçek değerleri (bu işaret için @DaveRGP sayesinde) belirtilerek yapılması gerekir:

ggplot(data = datos, aes(x = fecha))  
  geom_line(aes(y = TempMax, colour = "TempMax"))  
  geom_line(aes(y = TempMedia, colour = "TempMedia"))  
  geom_line(aes(y = TempMin, colour = "TempMin"))  
  scale_colour_manual("", 
                      values = c("TempMedia"="green", "TempMax"="red", 
                                 "TempMin"="blue"))  
  xlab(" ")  
  scale_y_continuous("Temperatura (C)", limits = c(-10,40))   
  labs(title="TITULO")

(daha önce aynı şekil veren). Değerler adında, sonları gösterge sırasını ayarlamak için kullanılabilir ve herhangi bir sipariş değerleri kullanılabilir.

ggplot(data = datos, aes(x = fecha))  
  geom_line(aes(y = TempMax, colour = "TempMax"))  
  geom_line(aes(y = TempMedia, colour = "TempMedia"))  
  geom_line(aes(y = TempMin, colour = "TempMin"))  
  scale_colour_manual("", 
                      breaks = c("TempMedia", "TempMax", "TempMin"),
                      values = c("TempMedia"="green", "TempMax"="red", 
                                 "TempMin"="blue"))  
  xlab(" ")  
  scale_y_continuous("Temperatura (C)", limits = c(-10,40))   
  labs(title="TITULO")

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bart Baker

    Bart Baker

    1 Aralık 2006
  • ghosti66

    ghosti66

    27 AĞUSTOS 2006
  • Miles Fisher

    Miles Fisher

    8 NİSAN 2009