[解決済み】安定したマッピングを持つggplot2のカテゴリ変数に色を割り当てるには?
質問
先月からRを使いこなすようになりました。
以下は私の質問です。
ggplot2 で、安定したマッピングを持つカテゴリ変数に色を割り当てる良い方法は何でしょうか?私は、異なるサブセットと異なる数のカテゴリ変数を持つグラフのセットで一貫した色を必要とします。
例えば
plot1 <- ggplot(data, aes(xData, yData,color=categoricaldData)) + geom_line()
ここで
categoricalData
は5段階あります。
そして
plot2 <- ggplot(data.subset, aes(xData.subset, yData.subset,
color=categoricaldData.subset)) + geom_line()
ここで
categoricalData.subset
には3つのレベルがあります。
しかし、両方のセットに含まれる特定のレベルは、異なる色になってしまい、グラフを一緒に読むことが難しくなります。
データフレームに色のベクトルを作成する必要があるのでしょうか?あるいは、カテゴリに特定の色を割り当てる別の方法がありますか?
どのように解決するのですか?
OPの例のような単純な状況では、Thierryの回答がベストであることに同意します。しかし、以下のような複数のデータフレームで一貫したカラースキームを維持しようとする場合、別のアプローチを指摘することが有用だと思います。 ではなく は、1つの大きなデータフレームをサブセットして得られたものです。複数のデータフレームの因子レベルを管理することは、それらが別々のファイルから取得され、すべての因子レベルが各ファイルに表示されない場合、面倒になることがあります。
これを解決する一つの方法として、以下のようにカスタムマニュアルカラースケールを作成する方法があります。
#Some test data
dat <- data.frame(x=runif(10),y=runif(10),
grp = rep(LETTERS[1:5],each = 2),stringsAsFactors = TRUE)
#Create a custom color scale
library(RColorBrewer)
myColors <- brewer.pal(5,"Set1")
names(myColors) <- levels(dat$grp)
colScale <- scale_colour_manual(name = "grp",values = myColors)
で、必要に応じてプロット上にカラースケールを追加します。
#One plot with all the data
p <- ggplot(dat,aes(x,y,colour = grp)) + geom_point()
p1 <- p + colScale
#A second plot with only four of the levels
p2 <- p %+% droplevels(subset(dat[4:10,])) + colScale
最初のプロットは次のようになります。
で、2つ目のプロットは次のようになります。
この方法では、データフレームが適切なレベルを持っていることを確認するために、それぞれのデータフレームを記憶したりチェックしたりする必要がありません。
関連
-
R言語 - マトリックス
-
[解決済み] Rで文字列から文字を削除する
-
[解決済み] Rで複数行のコメントを持つことは可能ですか?[重複している]。
-
[解決済み] R:自然対数を使った方程式をnlsで使う
-
[解決済み] 統計的最頻値の求め方は?
-
[解決済み] data.frameの1つの列の名前を変更する方法は?
-
[解決済み] Rで文字列から最後のn文字を抽出する
-
[解決済み】私のggplot2構文が賢明であるときに、R CMDチェック「no visible binding for global variable」注記を処理するにはどうすればよいですか?
-
[解決済み] [Solved] data.frameのカラムをベクトルに変換する?
-
[解決済み] FUN内のlapplyインデックス名へのアクセス
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Rの警告 "条件の長さが1より大きいので、最初の要素しか使えない "に対する解決策
-
R言語 - マトリックス
-
R言語における共通関数
-
[解決済み] ネストされた plot_grid を同じサイズに拡大縮小するには?
-
[解決済み] データフレームの行を複数の列でソート(並び替え)する。
-
[解決済み] 不足しているパッケージをチェックし、インストールするためのエレガントな方法?
-
[解決済み] data.frameの1つの列の名前を変更する方法は?
-
[解決済み] データフレーム内の列を名前でドロップする方法
-
[解決済み] Rでオブジェクト(変数)が定義されているかどうかを確認するには?
-
[解決済み】set.seed関数を使用する理由