亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何為具有穩定映射的ggplot 2中的分類變量分配顏色?

如何為具有穩定映射的ggplot 2中的分類變量分配顏色?

慕碼人8056858 2019-07-11 15:32:59
如何為具有穩定映射的ggplot 2中的分類變量分配顏色?在過去的一個月里我一直在跟上R的步伐。以下是我的問題:在具有穩定映射的ggplot 2中,為分類變量分配顏色的好方法是什么?我需要一組具有不同子集和不同數量的分類變量的圖形的一致顏色。例如,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 回答

?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

對于簡單的情況,如操作中的確切例子,我同意蒂埃里的答案是最好的。但是,我認為指出另一種方法是有用的,當您試圖在多個數據幀之間維護一致的顏色方案時,這種方法變得更容易所有這些都是通過減去單個大數據幀獲得的。如果從單獨的文件中提取因素級別,而不是每個文件中出現所有的因素級別,那么管理多個數據幀中的因素級別就會變得單調乏味。

解決這一問題的一種方法是創建一個自定義的手動顏色刻度,如下所示:

#Some test datadat <- data.frame(x=runif(10),y=runif(10),
        grp = rep(LETTERS[1:5],each = 2),stringsAsFactors = TRUE)#Create a custom color scalelibrary(RColorBrewer)myColors
         <- brewer.pal(5,"Set1")names(myColors) <- levels(dat$grp)colScale <- scale_colour_manual(name = "grp",values = myColors)

然后根據需要將顏色刻度添加到情節中:

#One plot with all the datap <- ggplot(dat,aes(x,y,colour = grp)) + geom_point()p1 <- p + colScale#A second plot with only four of
 the levelsp2 <- p %+% droplevels(subset(dat[4:10,])) + colScale


這樣,您就不需要記住或檢查每個數據幀,以確保它們具有適當的級別。


查看完整回答
反對 回復 2019-07-11
?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

最簡單的解決方案是在設置子集之前將分類變量轉換為一個因子。底線是,您需要一個因子變量,在您的所有子集中具有完全相同的水平。

library(ggplot2)dataset <- data.frame(category = rep(LETTERS[1:5], 100), 
    x = rnorm(500, mean = rep(1:5, 100)), y = rnorm(500, mean = rep(1:5, 100)))dataset$fCategory <
    - factor(dataset$category)subdata <- subset(dataset, category %in% c("A", "D", "E"))

帶有字符變量

ggplot(dataset, aes(x = x, y = y, colour = category)) + geom_point()ggplot(subdata, aes(x = x, y = y, colour = category)) + geom_point()

帶因子變量

ggplot(dataset, aes(x = x, y = y, colour = fCategory)) + geom_point()ggplot(subdata, aes(x = x, y = y, colour = fCategory)) + geom_point()


查看完整回答
反對 回復 2019-07-11
  • 3 回答
  • 0 關注
  • 2187 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號