使用ggplot

时间:2017-08-02 13:32:09

标签: r plot ggplot2 time-series

我有四年的时间序列数据。现在我想逐年绘制相同的数据并进行比较分析。虚拟数据为

library(xts)
library(ggplot2)
timeindex <- seq(as.POSIXct('2016-01-01'),as.POSIXct('2016-12-31 23:59:59'), by = "1 mins")
dataframe <- data.frame(year1=rnorm(length(timeindex),100,10),year2=rnorm(length(timeindex),150,7),
                        year3=rnorm(length(timeindex),200,3),
                        year4=rnorm(length(timeindex),350,4))
xts_df <- xts(dataframe,timeindex) 

现在,当我使用ggplot时,使用以下行绘制所有系列需要很长时间

visualize_dataframe_all_columns(xts_df)

上述功能定义为:

visualize_dataframe_all_columns <- function(xts_data) {
  library(RColorBrewer)# to increase no. of colors
  library(plotly)
  dframe <- data.frame(timeindex=index(xts_data),coredata(xts_data))
  df_long <- reshape2::melt(dframe,id.vars = "timeindex")
  colourCount = length(unique(df_long$variable))
  getPalette = colorRampPalette(brewer.pal(8, "Dark2"))(colourCount) # brewer.pal(8, "Dark2") or brewer.pal(9, "Set1")
  g <- ggplot(df_long,aes(timeindex,value,col=variable,group=variable))
  g <- g + geom_line() + scale_colour_manual(values=getPalette)
  ggplotly(g)
}

上述方法的问题是:

  1. 绘图需要很长时间。我可以减少剧情时间吗?
  2. 使用plotly放大图表非常困难。还有其他更好的方法
  3. 有没有更好的方法可视化这些数据?

1 个答案:

答案 0 :(得分:0)

我在10分钟数据的频率上遇到了或多或少相同的问题。然而,问题是,绘制全年的分钟数据是否有意义?人眼无法识别这种差异。

我会根据该数据创建每日xts,然后将其绘制为年份。并修改函数以绘制分钟数据的一段时间。