2016-04-21 12 views
0

私はしかし、私はYMIN、YMAX、ylowをなど箱ひげ図ggplotly

の完全にコントロールしていることができるようにする必要があり、plotlyライブラリとRに時系列箱ひげ図を描画しようとしているそれは完全に罰金レンダリングにggplot2では、たくさんの警告があります。 ggplotlyでレンダリングできない

これは私が持っているものです。

msft = read.csv("http://ichart.finance.yahoo.com/table.csv?s=MSFT", 
      header=TRUE, 
      sep=",") 
msft$Date 
msftF = msft %>% tbl_df() %>% filter(as.Date(Date) > as.Date("2016-01-01"))  %>% na.omit() 
msftF %>% 
    ggplot(aes(x = factor(Date), ymin = Low, lower = Open, middle = Close,  upper = Close, ymax = High)) + 
    geom_boxplot() + 
    geom_boxplot(stat = "identity") 
+0

?次に、 "lower"を "upper"より高い値に設定します。 – user1357015

+0

これらのケースをフィルタリングして無駄にしました。 msft = read.csv( "http://ichart.finance.yahoo.com/table.csv?s=MSFT"、 header = TRUE、 sep = "、") msft $日付 msftF = msft%> % tbl_df()%>% フィルタ(as.Date(Date)> as.Date( "2016-01-01"))%>% フィルタ(閉じる>開く)%>% na.omit X = msftF%>% ggplot(AES(X =因子(日)、YMIN =低、低級= OPEN、CLOSE =中間、閉じる=上側、YMAX =高))+ geom_boxplot()+ geom_boxplot(STAT = "identity") ggplotly(x) –

+0

私は基本的にローソク足チャートを作成しようとしていますが、金融ラッパーはまだRのために存在しないようです。 –

答えて

1

@デビッドクルックで

royr2 4月25日には、ここで簡単な例を示します。

library(plotly) 
library(quantmod) 

prices <- getSymbols("MSFT", auto.assign = F) 
prices <- prices[index(prices) >= "2016-01-01"] 

# Make dataframe 
prices <- data.frame(time = index(prices), 
        open = as.numeric(prices[,1]), 
        high = as.numeric(prices[,2]), 
        low = as.numeric(prices[,3]), 
        close = as.numeric(prices[,4])) 

# Blank plot 
p <- plot_ly() 

# Add high/low as a line segment 
# Add open close as a separate segment 
for(i in 1:nrow(prices)){ 
    p <- add_trace(p, data = prices[i,], x = c(time, time), y = c(high, low), mode = "lines", evaluate = T, 
       showlegend = F, 
       marker = list(color = "grey"), 
       line = list(width = 1)) 

    p <- add_trace(p, data = prices[i,], x = c(time, time), y = c(open, close), mode = "lines", evaluate = T, 
       showlegend = F, 
       marker = list(color = "#ff5050"), 
       line = list(width = 5)) 
} 

p 

UPDATE:

library(plotly) 
library(quantmod) 

prices <- getSymbols("MSFT", auto.assign = F) 
prices <- prices[index(prices) >= "2016-01-01"] 

# Make dataframe 
prices <- data.frame(time = index(prices), 
        open = as.numeric(prices[,1]), 
        high = as.numeric(prices[,2]), 
        low = as.numeric(prices[,3]), 
        close = as.numeric(prices[,4])) 

plot_ly(prices, x = ~time, xend = ~time, showlegend = F) %>% 
    add_segments(y = ~low, yend = ~high, line = list(color = "gray")) %>% 
    add_segments(y = ~open, yend = ~close, 
       color = ~close > open, 
       colors = c("#00b386","#ff6666"), 
       line = list(width = 3)) 

こちらをご覧くださいより完全な例: plotly 4.0はこれを行うのリリースでは、多くの方が簡単です近いが開い下回っている場合はどうなりhttp://moderndata.plot.ly/candlestick-charts-using-plotly-and-quantmod/

+0

素晴らしいソース!まさに私が探していたもの。 –

0

これは、quantmodパッケージを使用して行うことができます。

は、以下のことを試してください:あなたはそれらのすべてを必要としない場合

library(quantmod) 
getSymbols("MSFT") 
candleChart(MSFT,multi.col=TRUE,theme='white') 

あなたは小さな日付範囲にMSFTオブジェクトをトリミングすることができます。

ggplotで行う必要がある場合は、教えてください。私はコードを書きます。しかし、一般的に、私はそれがきれいなので、私はできるパッケージに固執する!

+0

それはかなり素早く滑らかです。私はggplot2を期待していたので、それを陰謀に押し込めます。私の最終目標は、私はクライアントにプッシュして、UIの人にそれをさせることができる素敵な視覚化またはhtml5/CSS/javascriptを得ることです。 –

0

Royr2がこれに答えましたが、数日後にコメントから回答に移動していないので、答えを明確な回答として取り込むために、私は単純に彼のコメントを回答に移行しています。彼が答えを投稿するならば、私は喜んで答えを適切な答えと記します。

私はplotlyここで人々のために何かを書いた - 。)(ggplotly>http://moderndata.plot.ly/candlestick-charts-using-plotly-and-quantmod/は(plot_ly使用)の代わりに、関数がquantmodパッケージ内のチャートに触発されたことは言うまでもない:)うまくいけばのに役立ちます。 ... - 5:02

関連する問題