2017-11-18 73 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轴的极限?这应该工作。

相关问题