【问题标题】:Creating a gvisLineChart plot as a discrete Scatter chart将 gvisLineChart 图创建为离散散点图
【发布时间】:2015-08-25 07:26:40
【问题描述】:

我正在尝试创建一个散点图,其中 x 轴的输入数据是基于字符串的。 gvisScatterChart 不支持这种数据类型,我实现了一个gvisLineChart 代替。

问题是数据是绘制的,每个数据都有一个单独的 x 轴位置,我希望这些点是离散的,对于相等的字符串只有一个 x 轴位置。

任何想法如何解决这个问题?我提供了一个最小的绘图示例。它用于 Shiny 应用程序,但问题在于绘图。

我已经直接从 R 更新了最小的示例以使其正常工作。日期只是一个示例,其中数据输入为字符串类型。 (所以仅仅让它为日期工作是不够的。

require(googleVis)

dataPlot <- data.frame(date = c("03/03/2015","03/03/2015",
                                "06/03/2015","06/03/2015","09/03/2015"), 
                       results = rnorm(5), results.html.tooltip = rnorm(5))

line <- gvisLineChart(dataPlot, xvar="date", yvar=c("results","results.html.tooltip"),
                 options=list(legend="none",
                              lineWidth=0,
                              pointSize=8,
                              width=400, 
                              height=400))

plot(line)

【问题讨论】:

  • 请让这个最小的例子“工作”,发布一些你的数据以及 x 和 y 输入可能是什么。
  • 谢谢,我现在已经更新到一个最小的工作示例,其中的点被绘制在单独的 x 轴点上,就像它们继续一样。

标签: r google-visualization shiny googlevis


【解决方案1】:

我通过正确调整数据并按日期拆分数据来解决这个问题。然而,这还没有解决我的工具提示问题。这是我的解决方案:

cbind.fill <- function(...){
  nm <- list(...) 
  nm<-lapply(nm, as.matrix)
  n <- max(sapply(nm, nrow)) 
  do.call(cbind, lapply(nm, function (x) 
    rbind(x, matrix(, n-nrow(x), ncol(x))))) 
}

dataPlot <- data.frame(xdata = sort(unique(dataPlot$date)),
                     ydata = t(do.call(cbind.fill,
                                    lapply(split(dfin,dfin$dut),
                                           "[",c("results")))),
                     row.names = NULL)

【讨论】: