将 gvisLineChart 图创建为离散散点图
Creating a gvisLineChart plot as a discrete Scatter chart
我正在尝试创建一个散点图,其中 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)
我通过正确调整数据并按日期拆分来解决了这个问题。然而,这还没有解决我的工具提示问题。这是我的解决方案:
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)
我正在尝试创建一个散点图,其中 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)
我通过正确调整数据并按日期拆分来解决了这个问题。然而,这还没有解决我的工具提示问题。这是我的解决方案:
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)