感謝您的更新!讓我打電話給你的數據d
d <- structure(list(Date = structure(c(5L, 6L, 7L, 8L, 1L, 2L, 3L,
4L), .Label = c("1/3/1928", "1/4/1928", "1/5/1928", "1/6/1928",
"12/28/1927", "12/29/1927", "12/30/1927", "12/31/1927"), class = "factor"),
DJIA = c(198.6, 199.96, 200.7, 202.4, 203.35, 202.24, 199.61,
201.45), SPX = c(NA, NA, NA, NA, 17.76, 17.72, 17.55, 17.66
)), .Names = c("Date", "DJIA", "SPX"), class = "data.frame", row.names = c(NA,
-8L))
與此數據的第一個問題是,Date
是一個因素,正確地繪製,我們首先需要將其更改爲Date
,
d$Date <- as.Date(d$Date, "%m/%d/%Y")
的最簡單方法實現你想要的輸出是刪除NA
如下
ggplot(d[complete.cases(d[,c("Date", "SPX")]), ], aes(x = Date, y = SPX)) +
geom_line()
但是,我懷疑你會是g大量的這些數字。創建你自己的劇情功能可能是一個更好的主意。
myplot <- function(data, myX, myY){
data <- data[complete.cases(data[,c(myX, myY)]), ]
ggplot(data, aes_string(x = myX, y = myY))+
geom_line()
}
通知的aes_string
,這簡化了變量名的傳遞。有可能使用aes
,但它有點複雜。
有了這個功能,你可以繪製各列的代碼現在
myCOL <- c("DJIA", "SPX") #names of columns, note they are in quotes. This is because we're using aes_string
allPLOT <- lapply(myCOL, function(x) myplot(d, "Date", x))
names(allPLOT) <- myCOL #naming the elements of the list
所有的地塊都存儲在一個列表,例如,你可以通過調用
allPLOT$SPX
請提供獲取劇情的
SPX
我們有一些數據,所以我們可以更好地解決您的問題 –謝謝@Jacob H您的興趣。我不知道如何上傳一個CSV文件到這個網站,所以我會給一個基本的描述。我的csv文件的前三欄是日期,道瓊斯工業平均收盤價和標準普爾500收盤價。前兩列的數據可追溯至1900年。然而,標準普爾開始於1928年,因此直到1928年纔有空單元格。我使用ggplot2 geom_line來繪製每列與日期列的對應關係。我希望情節從每列的第一個值開始,而不是始終在1900年開始。 – MBA
TY @JacobH不知道如何上傳csv文件,所以我將舉一個例子。前三列是日期,道瓊斯工業平均收盤價和標準普爾500收盤價。前兩列的數據可追溯至1900年。標準普爾開始於1928年,因此直到1928年纔有空單元格。我使用ggplot2 geom_line來繪製每一列的日期。我希望情節從每列的第一個值開始,並不總是從1900開始。ggplot(master,aes(date,SPX))+ geom_line(stat =「identity」,na.rm = T)+ scale_x_date( labels = date_format(「%m /%d /%Y」),date_breaks ='5 years') – MBA