簡體   English   中英

scale_colour_manual R ggplot2 geom_tile() 缺少什么?

[英]scale_colour_manual R ggplot2 geom_tile() missing something?

大家好,

我無法弄清楚如何為我的圖表指定“填充”顏色(如下)。

當我指定“填充”變量時,我的數據的不同子集具有不同的級別,例如,一個子集有 2 個級別,另外兩個有三個級別。 當我告訴我的 plot 使用變量來“填充”我的圖表顏色時,我的圖表之間會出現不同的顏色。 我試圖指定我的“填充”變量級別應該使用哪些顏色,但沒有奏效。 我嘗試使用 scale_colour_manual() 的多次重新排列,以及我在 SO 周圍發現的其他一些東西,但無法弄清楚。

在嘗試指定我的顏色時,有人可以指出我哪里出錯了。 下面是我正在使用的代碼的表示和我的問題的圖像。

# Code to post on Stack overflow to see where I am going wrong with scale_colour_manual()
data <- data.frame('id' = c('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c'), 
               'treatment' = c('1', '1', '1','1', '1', '1','1', '1', '1', '2', '2', '2','2', '2', '2','2', '2', '2', '3', '3', '3', '3', '3', '3', '3', '3', '3'), 
               'loci' = c('1', '1', '1', '2', '2', '2', '3', '3', '3', '1', '1', '1', '2', '2', '2', '3', '3', '3', '1', '1', '1', '2', '2', '2', '3', '3', '3'), 
               'assign' = c('0', '0', '0', '1', '2', '1', '1', '1', '1', '0', '0', '0', '1', '2', '1', '1', '1', '2', '0', '0', '0', '1', '2', '2', '1', '1', '1'))

a <- data[which(data$id == 'a'),]
b <- data[which(data$id == 'b'),]
c <- data[which(data$id == 'c'),]

aheat <- ggplot(a, aes(as.factor(loci), as.factor(treatment), fill = factor(assign))) + 
  geom_tile(colour = 'white') +
  scale_x_discrete(expand = c(0,0)) + 
  scale_y_discrete(expand = c(0,0)) +
  xlab("Number of Loci") + 
  ylab("Treatment") +
  ggtitle("A Plot") +
  theme(axis.ticks = element_blank(), axis.text.x = element_text(angle = 320, size = 6, vjust = 0.5), axis.text.y = element_text(size = 8)) +
  scale_colour_manual(breaks = a$assign, values = c('0' = 'blue', '1' = 'green'))
aheat

bheat <- ggplot(b, aes(as.factor(loci), as.factor(treatment), fill = factor(assign))) + 
  geom_tile(colour = 'white') +
  scale_x_discrete(expand = c(0,0)) + 
  scale_y_discrete(expand = c(0,0)) +
  xlab("Number of Loci") + 
  ylab("Treatment") +
  ggtitle("B Plot") +
  theme(axis.ticks = element_blank(), axis.text.x = element_text(angle = 320, size = 6, vjust = 0.5), axis.text.y = element_text(size = 8)) +
  scale_colour_manual(breaks = b$assign, values = c('0' = 'blue', '1' = 'green', '2' = 'red'))
bheat

cheat <- ggplot(c, aes(as.factor(loci), as.factor(treatment), fill = factor(assign))) + 
  geom_tile(colour = 'white') +
  scale_x_discrete(expand = c(0,0)) + 
  scale_y_discrete(expand = c(0,0)) +
  xlab("Number of Loci") + 
  ylab("Treatment") +
  ggtitle("C Plot") +
  theme(axis.ticks = element_blank(), axis.text.x = element_text(angle = 320, size = 6, vjust = 0.5), axis.text.y = element_text(size = 8)) +
  scale_colour_manual(breaks = c$assign, values = c('0' = 'blue', '1' = 'green', '2' = 'red'))
cheat

在此處輸入圖像描述

感謝所有的幫助!

問候,亞當

我們必須確保顏色真正用作填充物。 兩種解決方案:

  • 按照@Didzis_Elfert 的建議使用scale_fill_manual() 見第一張圖表。
  • 使用scale_color_manual()並沒有錯,但我們必須添加參數aesthetics = "fill" 見圖表 2 和 3。
# Setup
library(ggplot2)
data <- data.frame(id = c('a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c'),
                   treatment = c('1', '1', '1','1', '1', '1','1', '1', '1', '2', '2', '2','2', '2', '2','2', '2', '2', '3', '3', '3', '3', '3', '3', '3', '3', '3'),
                   loci = c('1', '1', '1', '2', '2', '2', '3', '3', '3', '1', '1', '1', '2', '2', '2', '3', '3', '3', '1', '1', '1', '2', '2', '2', '3', '3', '3'),
                   assign = c('0', '0', '0', '1', '2', '1', '1', '1', '1', '0', '0', '0', '1', '2', '1', '1', '1', '2', '0', '0', '0', '1', '2', '2', '1', '1', '1'))

a <- data[which(data$id == 'a'),]
b <- data[which(data$id == 'b'),]
c <- data[which(data$id == 'c'),]
# Chart 1: scale_fill_manual
aheat <- ggplot(a, aes(as.factor(loci), as.factor(treatment), fill = factor(assign))) +
  geom_tile(colour = 'white') +
  scale_x_discrete(expand = c(0,0)) +
  scale_y_discrete(expand = c(0,0)) +
  xlab("Number of Loci") +
  ylab("Treatment") +
  ggtitle("A Plot") +
  theme(axis.ticks = element_blank(), axis.text.x = element_text(angle = 320, size = 6, vjust = 0.5), axis.text.y = element_text(size = 8)) +
  scale_fill_manual(breaks = a$assign, values = c('0' = 'blue', '1' = 'green'))
aheat


# Chart 2: scale_color_manual
bheat <- ggplot(b, aes(as.factor(loci), as.factor(treatment), fill = factor(assign))) +
  geom_tile(colour = 'white') +
  scale_x_discrete(expand = c(0,0)) +
  scale_y_discrete(expand = c(0,0)) +
  xlab("Number of Loci") +
  ylab("Treatment") +
  ggtitle("B Plot") +
  theme(axis.ticks = element_blank(), axis.text.x = element_text(angle = 320, size = 6, vjust = 0.5), axis.text.y = element_text(size = 8)) +
  scale_color_manual(breaks = b$assign, values = c('0' = 'blue', '1' = 'green', '2' = 'red'),
                     aesthetics = "fill")
bheat


# Chart 3: scale_color_manual
cheat <- ggplot(c, aes(as.factor(loci), as.factor(treatment), fill = factor(assign))) +
  geom_tile(colour = 'white') +
  scale_x_discrete(expand = c(0,0)) +
  scale_y_discrete(expand = c(0,0)) +
  xlab("Number of Loci") +
  ylab("Treatment") +
  ggtitle("C Plot") +
  theme(axis.ticks = element_blank(), axis.text.x = element_text(angle = 320, size = 6, vjust = 0.5), axis.text.y = element_text(size = 8)) +
  scale_color_manual(breaks = c$assign, values = c('0' = 'blue', '1' = 'green', '2' = 'red'),
                     aesthetics = c("fill"))
cheat

代表 package (v2.0.1) 於 2022 年 9 月 11 日創建

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM