nPlot rCharts - 如何获得辅助轴?
nPlot rCharts - How to get a secondary axis?
我想绘制 2 个不同比例的变量。辅助轴将是我理想的解决方案。有谁知道如何在 rCharts 中实现这个。
有一个相关的 post 使用 Highcharts:
rCharts - Adding second y axis to time series
但我想知道如何在 rCharts 中使用 nPlot 获得它?
library(rCharts)
set.seed(1)
df <- data.frame(date=as.Date("2014-01-01")+1:10,y1=sample(1:200,70),y2=runif(70))
buildchart <- function(df) {
plotData<-df
temp<-aggregate(cbind(y1)~date,data=df,min)
tabledta<-summaryBy(y2~date,data=df,FUN=sum,keep.names = TRUE)
tabledta<-merge(tabledta,temp,by=c("date"),all.x=T)
filler = expand.grid(date=seq(as.Date(min(tabledta$date)),max(as.Date(tabledta$date)),by='1 day'))
df = merge(filler,
tabledta,
by=c('date'),
all.x=T)
df[is.na(df)]=0
data.melt<-melt(df,id.vars=c('date'),all=TRUE)
p <- nPlot(value ~ date, group = 'variable', data = data.melt, type = 'lineChart')
p$chart(margin=list(left=150))
p$yAxis(showMaxMin = FALSE)
p$xAxis(tickFormat ="#!function(d) {return d3.time.format('%Y-%m-%d')(new Date(d * 24 * 60 * 60 * 1000));}!#")
p
}
buildchart(df)
我认为 type='multichart'
可以是一个好的开始,我发现边距和 yAxis 存在一些不兼容性,但可能有解决办法。您可以在此处找到多图表类型的示例:
http://rcharts.readthedocs.org/en/latest/nvd3/create.html#multi-chart
关于你的功能,接下来的代码为你提供了两个y轴:
library(rCharts)
library(doBy)
library(reshape2)
set.seed(1)
df <- data.frame(date=as.Date("2014-01-01")+1:10,y1=sample(1:200,70),y2=runif(70))
buildchart <- function(df) {
plotData<-df
temp<-aggregate(cbind(y1)~date,data=df,min)
tabledta<-summaryBy(y2~date,data=df,FUN=sum,keep.names = TRUE)
tabledta<-merge(tabledta,temp,by=c("date"),all.x=T)
filler = expand.grid(date=seq(as.Date(min(tabledta$date)),max(as.Date(tabledta$date)),by='1 day'))
df = merge(filler,
tabledta,
by=c('date'),
all.x=T)
df[is.na(df)]=0
data.melt<-melt(df,id.vars=c('date'),all=TRUE)
#Changed to 'multichart'
p <- nPlot(value ~ date, group = 'variable', data = data.melt, type = 'multiChart')
p$params$multi = list(
y1 = list(type="line",yAxis=1), y2 = list(type="line",yAxis=2))
#The next two are commented two avoid incompatibilities
#p$chart(margin=list(left=150))
#p$yAxis(showMaxMin = FALSE)
p$xAxis(tickFormat ="#!function(d) {return d3.time.format('%Y-%m-%d')(new Date(d * 24 * 60 * 60 * 1000));}!#")
p$setTemplate(script = system.file(
"/libraries/nvd3/layouts/multiChart.html",
package = "rCharts"))
p
}
buildchart(df)
我想绘制 2 个不同比例的变量。辅助轴将是我理想的解决方案。有谁知道如何在 rCharts 中实现这个。
有一个相关的 post 使用 Highcharts: rCharts - Adding second y axis to time series 但我想知道如何在 rCharts 中使用 nPlot 获得它?
library(rCharts)
set.seed(1)
df <- data.frame(date=as.Date("2014-01-01")+1:10,y1=sample(1:200,70),y2=runif(70))
buildchart <- function(df) {
plotData<-df
temp<-aggregate(cbind(y1)~date,data=df,min)
tabledta<-summaryBy(y2~date,data=df,FUN=sum,keep.names = TRUE)
tabledta<-merge(tabledta,temp,by=c("date"),all.x=T)
filler = expand.grid(date=seq(as.Date(min(tabledta$date)),max(as.Date(tabledta$date)),by='1 day'))
df = merge(filler,
tabledta,
by=c('date'),
all.x=T)
df[is.na(df)]=0
data.melt<-melt(df,id.vars=c('date'),all=TRUE)
p <- nPlot(value ~ date, group = 'variable', data = data.melt, type = 'lineChart')
p$chart(margin=list(left=150))
p$yAxis(showMaxMin = FALSE)
p$xAxis(tickFormat ="#!function(d) {return d3.time.format('%Y-%m-%d')(new Date(d * 24 * 60 * 60 * 1000));}!#")
p
}
buildchart(df)
我认为 type='multichart'
可以是一个好的开始,我发现边距和 yAxis 存在一些不兼容性,但可能有解决办法。您可以在此处找到多图表类型的示例:
http://rcharts.readthedocs.org/en/latest/nvd3/create.html#multi-chart
关于你的功能,接下来的代码为你提供了两个y轴:
library(rCharts)
library(doBy)
library(reshape2)
set.seed(1)
df <- data.frame(date=as.Date("2014-01-01")+1:10,y1=sample(1:200,70),y2=runif(70))
buildchart <- function(df) {
plotData<-df
temp<-aggregate(cbind(y1)~date,data=df,min)
tabledta<-summaryBy(y2~date,data=df,FUN=sum,keep.names = TRUE)
tabledta<-merge(tabledta,temp,by=c("date"),all.x=T)
filler = expand.grid(date=seq(as.Date(min(tabledta$date)),max(as.Date(tabledta$date)),by='1 day'))
df = merge(filler,
tabledta,
by=c('date'),
all.x=T)
df[is.na(df)]=0
data.melt<-melt(df,id.vars=c('date'),all=TRUE)
#Changed to 'multichart'
p <- nPlot(value ~ date, group = 'variable', data = data.melt, type = 'multiChart')
p$params$multi = list(
y1 = list(type="line",yAxis=1), y2 = list(type="line",yAxis=2))
#The next two are commented two avoid incompatibilities
#p$chart(margin=list(left=150))
#p$yAxis(showMaxMin = FALSE)
p$xAxis(tickFormat ="#!function(d) {return d3.time.format('%Y-%m-%d')(new Date(d * 24 * 60 * 60 * 1000));}!#")
p$setTemplate(script = system.file(
"/libraries/nvd3/layouts/multiChart.html",
package = "rCharts"))
p
}
buildchart(df)