gpt4 book ai didi

r - 具有 "sparkTable"包的多个系列的绘图

转载 作者:行者123 更新时间:2023-12-04 09:10:49 24 4
gpt4 key购买 nike

如果我理解正确,sparkTable包允许多种绘图,但仅限于一个系列。因此,例如,如果我的数据集 df看起来像这样:

variable  value   time
Level_1 34 1947
Level_1 38 1948
Level_1 17 1949
Level_1 61 1950
Level_1 19 1951
Level_1 80 1952
Level_1 57 1953
Level_1 66 1954


即变量“值”在“变量”级别上随“时间”变化,然后我可以使用以下代码绘制例如不同级别“变量”的迷你图和“值”条形图:
library(sparkTable)
content<-list()
content[['LinePlot']]<-newSparkLine()
content[['BarPlot']]<-newSparkBar()

varType<-rep("value",2)
df<-df[,c("variable","value","time")]
df$time<-as.numeric(as.character(df$time))
dat<-reshapeExt(df,idvar="variable",varying=list(2))
sparkTab<-newSparkTable(dat,content,varType)
plotSparkTable ( sparkTab , outputType = "html", filename = "t1")

但是有没有办法在同一个输出中绘制多个系列?例如,假设我想要一个表示“值(value)”的迷你图,另一个表示“值(value)”系列随时间的累积(按 Cumulative_Value = ave(df$value, df$variable, FUN=cumsum) 计算)

最佳答案

您的意思是在生成的 sparkTable 中添加额外的行吗?

编辑 :OP 想要添加额外的列,而不是行。

添加额外的列

要添加额外的列,您只需更新 df , contentvarType包括累积值。将以下内容添加到您的代码中:

# with the other lines defining content:
content[['Cumulative']] <- newSparkLine()

# add the following to your df
df$cumulative = ave(df$value, df$variable, FUN=cumsum)

# add the following to your varType definition
varType <- c('value','value','cumulative')

其余的可以保持不变。

第一行将另一个迷你图列添加到您的表格中,第二行计算 cumulative列并将其添加到您的数据框中,第三个告诉 newSparkTable前两个图是 value列和最后一个为 cumulative柱子。

enter image description here

添加额外的行

我知道的唯一方法(它不是很好)是向您的 df 添加额外的行,每个对应于累积值。

例如:
# make dummy data table with Levels 1 2 3,
# years 1947:1966 for each, and
# values being random from 1 to 100.
years <- 1947:1966
n <- length(years)
df <- data.frame( variable=sprintf('Level_%i',rep(1:3,each=n)), value=sample(100,3*n,replace=T), time=years )

# as before (setting up spark table)
library(sparkTable)
content<-list()
content[['LinePlot']]<-newSparkLine()
content[['BarPlot']]<-newSparkBar()

# ** calculate cumulative value, and APPEND to the dataframe
# There is a different cumulative line for *each* level.
# Hence we need to make new factors
# Level_1_cumulative, Level_2_cumulative, Level_3_cumulative
cv <- ave(df$value, df$variable, FUN=cumsum)
df2 <- rbind(df, data.frame( variable=sprintf('Level_%i_cumulative',rep(1:3,each=n)), value=cv, time=years ))

# as before (make sparktable, but use df2 this time)
dat<-reshapeExt(df2,idvar="variable",varying=list(2))
varType<-rep("value",2)
sparkTab<-newSparkTable(dat,content,varType)
plotSparkTable ( sparkTab , outputType = "html", filename = "t1")

我最终得到了这样的结果:
enter image description here

关于r - 具有 "sparkTable"包的多个系列的绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8588060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com