2016-07-26 3 views
1

最近、私はRで複製したいグラフを見ました。グラフには、複数のレコードのスコアやその他の測定値が、4色のうちの1色に色付けされた色付きボックスとして表示されます。私のイメージでは赤、淡い赤、明るい緑、緑です。だから、各レコードには、それぞれのスコアに対応するボックスが1つずつあります。つまり、各レコードは、ある時点での複数の時点で1つのスコアを持っていました。私の例では、私は時間をかけて生徒テストのスコアを使用しますので、学生4人、テスト8人(年代順)、学生1人につき8個のボックスがあり、32個のボックスがあります。各行(生徒)には8つのボックスがあります。ここでggplotによるトレンドチャートの複製

hacked-up attempt of the chart

私はいくつかの例のデータを作成する方法である:

totallynotrealdata <- data.frame(Student = c(rep("A",8),rep("B",8),rep("C",8),rep("D",8)),Test = rep(1:8,4), Score = sample(1:99,32,replace = TRUE), BinnedScore = cut(totallynotrealdata$TB,breaks = c(0,25,50,75,100),labels = c(1,2,3,4))) 

私は思ったんだけど私はggplotでこのチャートを再作成することができる方法ですか?私が見なければならないどんな歯茎?

答えて

1

geom_rect()で遊ぶことができます。これは非常に基本的なものですが、私はあなたが簡単にあなたの目的のためにそれを最適化することができますね。

df <- data.frame(Student = c(rep(1,8),rep(2,8),rep(3,8),rep(4,8)), 
       Test = rep(1:8,4), 
       Score = sample(1:99,32,replace = TRUE)) 

df$BinnedScore <- cut(df$Score,breaks = c(0,25,50,75,100),labels = c(1,2,3,4)) 
df$Student  <- factor(df$Student, labels = LETTERS[1:length(unique(df$Student))]) 

library(ggplot2) 

colors <- c("#f23d2e", "#e39e9c", "#bbd3a8", "#68f200")  
numStuds <- length(levels(df$Student)) 
numTests <- max(df$Test) 

ggplot() + geom_rect(data = df, aes(xmin = Test-1, xmax = Test, ymin = as.numeric(Student)-1, ymax = as.numeric(Student)), fill = colors[df$BinnedScore], col = grey(0.5)) + 
    xlab("Test") + ylab("Student") + 
    scale_y_continuous(breaks = seq(0.5, numStuds, 1), labels = levels(df$Student)) + 
    scale_x_continuous(breaks = seq(0.5, numTests, 1), labels = 1:numTests) 

enter image description here

+0

私はgeom_rectを見ていた()が、GEOM機能ではなく、ggplot機能の下美的マッピングをしていました!私はそれ以上のことをしなければならないでしょう – user2784067

+0

ところで、あなたの最終的な結果は目に非常に満足です! – user2784067

関連する問題