2017-11-18 10 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

あなたの問題はmiddleのために供給NAです。それは連続的な値である必要があります。私はcandleUppercandleLowerと同じ長さの0に変更し、エラーは消え去った。

これは役に立ちますか?

+0

はい、ありがとうございます! –

+0

しかし、今度は2番目の問題が発生しました。グラフのろうそくの値が100 y.e.より高いです。 (yスケールで)、このグラフを制限し、50または100で始まる縮尺を表示したい(0ではなく)。私はggplot(ylim = c(50,150))を追加しようとしましたが、グラフには何の影響もありませんでした。 –

+0

新しいコードで更新したり、新しい質問をすることはできますか? –

0

y軸の制限を変更するにはg + scale_y_continuous(limits = c(50、max(data)))を試しましたか?それはうまくいくはずです。

関連する問題