4

私がそれを正しく理解していれば、sparkTableパッケージは複数の種類のプロットを許可しますが、1 つのシリーズのみです。たとえば、私のデータセット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")

しかし、同じ出力で複数のシリーズをグラフ化する方法はありますか? たとえば、「値」の 1 つのスパークラインと、時間の経過に伴う「値」シリーズの累積 (によって計算Cumulative_Value = ave(df$value, df$variable, FUN=cumsum))のスパークラインが必要だとします。

4

1 に答える 1

6

結果の sparkTable に余分な行を追加するということですか?

EDIT : OP は、行ではなく列を追加することを望んでいます。

余分な列の追加

追加の列を追加するには、更新dfcontentvarType累積値を含めるだけです。以下をコードに追加します。

# 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')

残りは同じままでかまいません。

1 行目は別のスパーク ライン列をテーブルに追加し、2 行目はcumulative列を計算してデータ フレームに追加し、3 行目はnewSparkTable最初の 2 つのプロットがvalue列用で、最後の 1 つが列用であることを示しcumulativeます。

ここに画像の説明を入力

行の追加

私が知っている唯一の方法 (そしてあまりいい方法ではありません) は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")

私はこのようなものになります: ここに画像の説明を入力

于 2011-12-22T01:46:59.733 に答える