【Highcharts教程】R用户中的Highcharts(上)

下载Highcharts最新版本

今天,我们将使用折线图,柱形图和散点图可视化资产回报。下次我们将通过添加回归线和模拟结果来进行更复杂的工作。将可视化宏观经济数据,如BLS就业报表和GDP数据。 对于我们的数据,我们将使用以下5个ETF的5年月度回报。

+ SPY (S&P500 fund)
+ EFA (a non-US equities fund)
+ IJS (a small-cap value fund)
+ EEM (an emerging-mkts fund)
+ AGG (a bond fund)

需要以下包

library(tidyverse)
library(timetk)
library(kableExtra)
library(highcharter)

完整的代码在这里:

symbols <- 
  c("SPY","EFA", "IJS", "EEM","AGG")

prices <- 
  getSymbols(symbols, 
             src = 'yahoo', 
             from = "2013-01-01",
             to = "2017-12-31",
             auto.assign = TRUE, 
             warnings = FALSE) %>% 
  map(~Ad(get(.))) %>%
  reduce(merge) %>% 
  `colnames<-`(symbols)

prices_monthly <- 
  to.monthly(prices, 
             indexAt = "last", 
             OHLC = FALSE)

asset_returns_xts <- 
  na.omit(Return.calculate(prices_monthly, 
                           method = "log"))

asset_returns_xts <- asset_returns_xts * 100
  

asset_returns_long <-  
  prices %>% 
  to.monthly(indexAt = "last", 
             OHLC = FALSE) %>% 
  tk_tbl(preserve_index = TRUE, 
         rename_index = "date") %>%
  gather(asset, returns, -date) %>% 
  group_by(asset) %>%  
  mutate(returns = 
           (log(returns) - log(lag(returns))) *100
         ) %>% 
  na.omit()

我们将使用保存每月资产回报的两个数据对象。第一个被称为asset_returns_xts。看看前几行。

teechart

每个ETF月度回报都有一列,但请注意日期在无名栏中。实际上,日期根本不在列中,它被认为是该矩阵的基于时间的索引。 比较一下asset_returns_long。

teechart

该对象有一个名为的列date,一个名为asset的列和一个名为的列returns。它被认为是一个长数据对象,因为ETF是按行堆叠的,而asset_returns_xts被认为是一个宽数据对象,因为每个ETF都有自己的列并使对象更宽。asset_returns_long并asset_returns_xts保持完全相同的信息,但格式不同。我们将研究如何使用highcharter对两者进行可视化,因为它们都是金融界的流行数据格式。

让我们从asset_returns_xtsHighcharts工具链的Highstock部分开始并使用它。要从R调用此功能,我们首先提供,然后提供要绘制的数据。请注意,我们指定type =“line”,但这不是必需的,因为默认值是折线图。 highchart(type = "stock")

highchart(type = "stock") %>% 
  hc_add_series(asset_returns_xts$SPY, type = "line")

看一下图表,注意它底部有一个导航器,右上角有一个日期范围选择器。我们没有必要对它们进行编码,默认情况下创建它们是我们最终用户的一个非常好的功能。highchart(type = "stock") 如果我们喜欢不同的颜色,我们可以改变它。color = "green"

highchart(type = "stock") %>% 
  hc_add_series(asset_returns_xts$SPY, 
                type = "line",
                color = "green")

如果我们想要柱形图而不是折线图怎么办?除了我们指定之外,它是相同的代码流。type = "column"

highchart(type = "stock") %>% 
  hc_add_series(asset_returns_xts$SPY, type = "column")

将鼠标悬停在这两个图表上并注意工具提示如何自动从x轴拉出日期。 对于散点图,我们使用相同的代码流,更改为,但我们也可以通过追加来添加EFA ETF的回报。我们可以为所有5个ETF做这个,逐行添加它们,将所有5个放在同一个散点图上。type = "scatter"hc_add_series(asset_returns_xts$EFA)

highchart(type = "stock") %>% 
  hc_add_series(asset_returns_xts$SPY, type = "scatter") %>% 
  hc_add_series(asset_returns_xts$EFA, type = "scatter")


猜你喜欢

转载自blog.51cto.com/13993266/2324109