我试图用图形库在R中绘制一个时间序列盒图,但是我需要能够完全控制ymin,ymax,ylow等。
它在ggplot2中呈现出非常好的效果,尽管有大量警告。它无法在短时间内呈现。
这是我所拥有的。
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") 发布于 2016-05-03 08:50:45
@David,这是一个简单的例子。
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更新:随着plotly 4.0的发布,这样做要容易得多:
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))有关更完整的示例,请参见此处:http://moderndata.plot.ly/candlestick-charts-using-plotly-and-quantmod/
发布于 2016-04-22 17:59:07
您可以使用quantmod包来完成这个任务。
尝试以下几点:
library(quantmod)
getSymbols("MSFT")
candleChart(MSFT,multi.col=TRUE,theme='white') 如果您不需要所有的对象,您可以将MSFT对象缩减到较小的日期范围。
如果你需要用ggplot来做这件事,让我知道,我会写代码的。但通常情况下,我坚持包装,因为我可以,因为它更干净!
发布于 2016-05-02 16:23:23
Royr2回答了这个问题,但是他已经几天没有把答案从评论移到答案中了,所以为了把答案作为一个标记的答案,我只是将他的评论迁移到答案中。如果他贴出他的答案,我很乐意把他的答案标记为适当的答案。
“
我在这里为大家写了一些东西,-> http://moderndata.plot.ly/candlestick-charts-using-plotly-and-quantmod/使用plot_ly()而不是ggplotly()。不用说,这个函数的灵感来源于quantmod包中的图表:)希望能有所帮助.-
“
royr2 4月25日5:02
https://stackoverflow.com/questions/36780022
复制相似问题