2017-11-18 113 views
3

早上好,同事們!現在我嘗試通過R中的ggplot包建立圖形 - 日本蠟燭,但代碼不想工作。錯誤是:離散值連續刻度

提供給連續秤的離散值。

我認爲數據不顯示爲數字的ggplot,但如果我更改代碼:as.vector - >as.numeric,這個問題並沒有消失。你能說我做錯了嗎?謝謝。

library("dplyr") 
library("ggplot2") 
library("quantmod") 
getSymbols('AAPL') 
x<-AAPL 
head(x) 

start=as.Date("2017-01-01") 
end=as.Date("2017-09-01") 
candle <- function(x, start, end){ 
date <- as.Date(time(x)) 
    open <- as.vector(Op(x)) 
    high <- as.vector(Hi(x)) 
    low <- as.vector(Lo(x)) 
    close <- as.vector(Cl(x)) 
xSubset <-data.frame('date'=date,'open'=open,'high'= high,'low'=low,'close'=close) 
xSubset$candleLower <- pmin(xSubset$open, xSubset$close) 
    xSubset$candleMiddle <- NA 
    xSubset$candleUpper <- pmax(xSubset$open, xSubset$close) 
    xSubset$fill <- '' 
    xSubset$fill[xSubset$open < xSubset$close] = 'white' 
    xSubset$fill[xSubset$fill ==''] = 'red' 
xSubset$ma200 <- SMA(xSubset$close, 200) 
    xSubset$ma50 <- SMA(xSubset$close, 50) 
xSubset <-subset(xSubset, xSubset$date > start & xSubset$date < end) 
g <- ggplot(xSubset, aes(x=date, lower=candleLower, middle=candleMiddle, upper=candleUpper, ymin=low, ymax=high)) 
    g <- g + geom_boxplot(stat='identity', aes(group=date, fill=fill)) 
    g <- g + geom_line(aes(x=date, y=ma50))+ geom_line(aes(x=date, y=ma200)) 
    g 
} 

candle(AAPL, start, end) 

回答

0

您的問題是NA提供的middle。它需要是一個持續的價值。我將其更改爲與candleUppercandleLower相同長度的0,並且錯誤消失。

這有幫助嗎?

+0

是的,謝謝! –

+0

但現在發生了第二個問題:圖中蠟燭的值高於100 y.e. (在y範圍內),我想限制這個圖表並顯示從50或100開始的比例(但不是0)。我嘗試添加ggplot(ylim = c(50,150)),但對於obrained圖沒有任何影響。 –

+0

你可以用你的新代碼更新,甚至可以提出一個新的問題嗎? –

0

您是否嘗試過使用g + scale_y_continuous(limits = c(50,max(data)))來改變y軸的極限?這應該工作。

相關問題