2017-05-08 6 views
0

Rで色をマッピングしました。しかし何かはクリックしていません。 理想的には、変数名 "student"に色の名前をマップしたいのですが、長さのエラーが発生しています。ただし、色にマッピングされる生徒の数は同じです。また、私は2つの別々の色の列を作成しようとしました - 文字列とIDとして。色は、その後、凡例にラベルが付けられます。マニュアルスケールのカラーオプションを追加するだけではあまり効果がありません。ここRで色を塗りつぶす方法R

は、データのサンプルである:

m3 <- structure(list(student = structure(c(7L, 11L, 9L, 2L, 8L, 4L), .Label = c("a","b", "c", "d", "e", "f", "g","h", "i", "j", "k", "l", "m", "n","o", "p"), class = "factor"), colorz = structure(4:9, .Label = c("#66CC99","#9999CC", "#CC6666", "#FF0000FF", "#FF2000FF", "#FF4000FF","#FF6000FF", "#FF8000FF", "#FF9F00FF", "#FFBF00FF", "#FFDF00FF","#FFFF00FF", "green", "red"), class = "factor"), variable = structure(c(1L,1L, 1L, 1L, 1L, 1L), .Label = c("pre", "c1", "c2","b1", "c3", "c4", "b2", "u1", "u2","u3", "u4", "total"), class = "factor"), value = c(3, 31,49, 88, 31, 40), col = c("#FF0000FF", "#FF2000FF", "#FF4000FF","#FF6000FF", "#FF8000FF", "#FF9F00FF")), .Names = c("student","colorz", "variable", "value", "col"), row.names = c(NA, 6L), class = "data.frame") 

し、次いでグラフ:ggplot(m3, aes(x=variable, y=value, group=student,linetype=student)) + geom_line(size=.75) + geom_point(size=2) + xlab("test") + ylab(paste("score")) + geom_hline(yintercept=70, linetype="dashed", size=3) + theme(axis.text.x = element_text(angle = 45, hjust = 1)) + scale_color_identity()

例では、実際のデータよりもはるかに小さいです。 理想的には、color.names <- setNames(c("#FF0000FF", "#FF2000FF", "#FF4000FF", "#FF6000FF", "#FF8000FF", "#FF9F00FF","#CC6666", "#9999CC", "#66CC99", "#FFBF00FF", "#FFDF00FF", "#FFFF00FF","green","red"), c("a","b","c", "d","e","f","g","h","i","j","k","l","m","n"))

のようなものを使用できるようにしたいと思います。何がうんざりしているのか分かりません。あたかも私が12色を14色の値にマッピングしようとしているかのように見えるかもしれませんが、14色も試しました。

答えて

1

まず、このような学生に色を割り当てます(aes(color = student))。代わりにscale_color_manual()を使用してください。あなたはすでにあなたの色ベクトルを命名するので、ggplotは名前に基づいてマッチングを処理する、名前がパレットにない場合を除き、その値が低下し、プロットされていないされます。 enter image description here

ggplot(m3, aes(x=variable, y=value, group=student, linetype=student, color = student)) + 
    geom_line(size=.75) + geom_point(size=2) + xlab("test") + 
    ylab(paste("score")) + geom_hline(yintercept=70, linetype="dashed", size=3) + 
    theme(axis.text.x = element_text(angle = 45, hjust = 1)) + 
    scale_color_manual(values = color.names) 

は次のようになります

関連する問題