2013-12-17 54 views
1

我想繪製三個不同的行與ggplot2,顯示三個不同變量(最大,最小和平均溫度)的時間序列。問題出現在我想爲每一行/變量設置顏色時。R ggplot2通過變量設置顏色行無分組

ggplot命令:

plot.temp=ggplot(data,aes_string(x="date", y="Tmed",colour="Tmed")) + geom_line() + 
    geom_line(data=data,aes_string(x="date",y="Tmin",colour="Tmin")) + 
    geom_line(data=data,aes_string(x="date",y="Tmax",colour="Tmax")) 

爲每一行代表一個單一的時間,而不是可用的類別在這裏我不使用組。

我試圖像scale_color_manual另一個帖子發現不同optinos但隨後出現

你可以找到http://ubuntuone.com/45LqzkMHWYp7I0d47oOJ02數據文件可以與data = read.csv(filename,header=T, sep=",",na.strings="-99.9")

我只是想能夠很容易地讀懂Continuous value supplied to discrete scale錯誤信息手動設置顏色線但無法找到方式。

在此先感謝。

回答

4

首先,您需要將date轉換爲Date對象,因爲現在它被視爲因子。如果將日期視爲因素,則將每個date值假定爲單獨的組。

data$date<-as.Date(data$date) 

其次,由於使用的是aes_string()colour="Tmed"被解釋爲依賴從實際Tmed值的顏色。使用aes()並且僅爲colour=變量引用。也不需要在每個geom_line()中重複data=自變量,因爲您使用相同的數據幀。

ggplot(data,aes(x=date, y=Tmed,colour="Tmed")) + geom_line() + 
    geom_line(aes(y=Tmin,colour="Tmin")) + 
    geom_line(aes(y=Tmax,colour="Tmax")) 

當然你也可以融化你的數據,然後你就只需要一個電話geom_line()(但你仍然需要更改日期列)。

library(reshape2) 
data2<-melt(data[,1:4],id.vars="date") 
ggplot(data2,aes(date,value,color=variable))+geom_line() 

enter image description here

+1

+1 reshape2,在開始的時候我只是恨有一個數據幀在那裏我已經融化的數據框(而不是到Excel),但現在,我只是喜歡它 – Ananta

+0

感謝@ didzis-elferts這兩個解決方案運行良好,但我仍然無法選擇圖例的顏色和標籤。也許'scale_color_manual'? – pacomet

+0

通過添加scale_color_manual(「Temperatura」,values = c('red','brown','blue'),labels = c('Máxima','Media','Mínima'))'是經過一些嘗試,我不知道爲什麼工作。 – pacomet