今のところ、私は次のようなものを使用しています:
test_data$level <- rep("", nrow(test_data))
test_data[test_data$value <= 1, ]$level <- "1"
test_data[test_data$value > 1 & test_data$value <= 2, ]$level <- "2"
...
test_data[test_data$value > 4 & test_data$value <= 5, ]$level <- "5"
Rでこれを行うためのより良い方法があるのか、それとも単に分類を行うために何らかのscale
引数を適用する方法があるのか疑問に思っggplot2
ています。
これにはいくつかのアプローチがある可能性があるため、私の質問を正確に表現することは困難でした。ここに要点があります...私はそのようなデータを持っています:
set.seed(123)
test_data <- data.frame(var1 = rep(LETTERS[1:3], each = 5),
var2 = rep(letters[1:5], 3),
value = runif(30, 1, 5))
test_data
var1 value
1 A 2.150310
2 B 4.153221
3 C 2.635908
4 D 4.532070
5 E 4.761869
6 F 1.182226
7 G 3.112422
8 H 4.569676
9 I 3.205740
10 J 2.826459
私はもっとたくさんのデータポイントを持っていて、次のようなものをプロットしています:
library(ggplot2)
p <- ggplot(test_data, aes(x = var1, y = var2, colour = value))
p <- p + geom_jitter(position = position_jitter(width = 0.1, heigh = 0.1))
p
これはそのようなものを与えます:
私の実際のデータは、1〜5の評価による主観的な評価からのものですが、同様の質問をまとめて平均したため、整数ではなくなりました。
因子の組み合わせごとの評価をプロットして、どの組み合わせがより高い評価をもたらしたかを視覚化します。デフォルトの連続スケールは実際には「ポップ」ではないので、これらの値(0-1、1-2、... 4-5)の「ビン」を次のように色付けするようにカラースケールを取得したいと思いますscale_colour_discrete
。要因のため。
だから、私の質問:
1)ggplot2を使用して、これらを何らかの方法で「ビン化」しscale_colour_continuous
て、これが連続データであっても、デフォルトの因子レベルの色付けスキームを適用できるようにすることは可能ですか?
2)そうでない場合、基準に基づいて値を数字/文字に置き換える新しいベクトルを作成する簡単な方法はありますか?私は少しR初心者なので、たくさんのif()
条件文(test_data[test_data > 0 & test_data < 1, "values"] <- "a"
またはそのようなもの)を除いてはわかりませんでした。