我想創建一個折線圖,顯示未檢測到的數據的開放符號和表示檢測到的數據的關閉(填充)符號。下面是一些代碼一起工作:ggplot有條件地改變形狀或形狀填充使用變量
date <- c("1991-04-25","1991-04-26","1991-04-27","1991-04-28","1991-04-29","1991-04-25","1991-04-26","1991-04-27","1991-04-28","1991-04-29","1991-04-25","1991-04-26","1991-04-27","1991-04-28","1991-04-29")
Parameter <- c("TEA","TEA","TEA","TEA","TEA","COFFEE","COFFEE","COFFEE","COFFEE","COFFEE","WATER","WATER","WATER","WATER","WATER")
data <- c(5,4,7,3,6,4,6,8,6,3,7,8,7,6,7)
DetectYN <- c("Y","N","Y","Y","Y","N","Y","Y","Y","N","N","N","Y","Y","N")
df <- data.frame(date, Parameter,data, DetectYN)
df$date <- as.Date(df$date, "%Y-%m-%d")
df$DetectYN <-as.character(df$DetectYN)
ggplot(df, aes(x=date, y=data)) +
geom_point(size=4, aes(shape = Parameter , colour= Parameter)) +
geom_line(aes(x=date, y=data,color = Parameter)) +
scale_shape_manual(values=ifelse(DetectYN == "Y",c(15,16,17),c(0,1,2)) , guide = "none")
這在下面的圖表 - 接近正確的,只是我的ifelse沒有預期的效果。我想DetectYN =「N」是空心的(沒有填充),我想要填充DetectYN =「Y」。現有的符號需要保留。有誰能幫我解決這個問題嗎?
您的代碼工作對我來說(我得到填補而空點符號的組合)。這是一個錯字嗎?如果你有'values = ifelse(LOC $ DetectYN ==「Y」,c(15,16,17),c(0,1,2))''你的意思是'values = ifelse(DetectYN ==「Y」 ,c(15,16,17),c(0,1,2))'沒有LOC $ – G5W
對不起 - 這是我實際代碼中的一個遺蹟......好吧,我刷新了我的環境,並能夠像你說的那樣重現(謝謝),但這還不完全正確。如果您查看數據框,您會看到例如Coffee,應該有兩個點顯示未檢測到,以及三個顯示已檢測到的點。目前,它們都顯示無法檢測到(假設它正在獲取組中的第一個值)。我編輯了原始代碼以取出'LOC'參考。 @ G5W –