更改 scale_colour_manual 上的环境大小以将颜色分配给要在多个图中使用的因素
change environment size on scale_colour_manual to assign colour to factors to use across multiples plots
我需要绘制 5 个细菌种类图。每个地块都有不同数量的物种,范围为 30-90。我希望每个细菌在所有图中始终具有相同的颜色,因此我需要为每个名称设置指定的颜色。
我尝试使用 scale_colour_manual 创建颜色集,但是创建的环境只有 16 种颜色。如何增加所创建环境中的颜色数量?
我使用的代码可以复制如下:
colour_genus <- stringi::stri_rand_strings(90, 5) #to be random names
nb.cols = nrow(colour_genus) #to set the length of my string
MyPalette = colorRampPalette(brewer.pal(12,"Set1"))(nb.cols) # the palette of choice
colGenus <- scale_color_manual(name = colour_genus, values = MyPalette)
形成的输出仅包含 16 个值,因此当我尝试将其应用于具有 90 个因子的图形时,它抱怨我只有 16 个值
abundance <- runif(90, min = 10, max = 100)
my_data <- data.frame(colour_genus, abundance)
p <- ggplot(my_data, aes(x = colour_genus, y= abundance)) +
geom_bar(aes(color = colour_genus, fill = colour_genus), stat = "identity", position = "stack") +
labs(x = "", y = "Relative Abundance\n") +
theme(panel.background = element_blank())
p + theme(legend.text= element_text(size=7, face="bold"), axis.text.x = element_text(angle = 90)) + guides(fill=guide_legend(ncol=2)) + scale_fill_manual(values=colGenus)
显示如下错误:
错误:手动刻度中的值不足。需要 90 个,但只提供了 16 个。
非常感谢您的帮助。
当你在plotting前知道你所有的90个杆菌名字,你就可以试试了。
set.seed(123)
colour_genus <- sort(stringi::stri_rand_strings(90, 5))#to be random names. I sorted the vector to illustrate the output better (optional).
MyPalette <- sample(colors(), length(colour_genus))
# named vector for scale_fill
names(MyPalette) <- colour_genus
# data
abundance <- runif(90, min = 10, max = 100)
my_data <- data.frame(colour_genus, abundance)
# two sets to show results
set1 <- my_data[20:30,]
set2 <- my_data[25:35,]
ggplot(set1, aes(x = colour_genus, y= abundance)) +
geom_col(aes(fill = colour_genus)) +
scale_fill_manual(values = MyPalette)
ggplot(set2, aes(x = colour_genus, y= abundance)) +
geom_col(aes(fill = colour_genus)) +
scale_fill_manual(values = MyPalette)
我需要绘制 5 个细菌种类图。每个地块都有不同数量的物种,范围为 30-90。我希望每个细菌在所有图中始终具有相同的颜色,因此我需要为每个名称设置指定的颜色。 我尝试使用 scale_colour_manual 创建颜色集,但是创建的环境只有 16 种颜色。如何增加所创建环境中的颜色数量?
我使用的代码可以复制如下:
colour_genus <- stringi::stri_rand_strings(90, 5) #to be random names
nb.cols = nrow(colour_genus) #to set the length of my string
MyPalette = colorRampPalette(brewer.pal(12,"Set1"))(nb.cols) # the palette of choice
colGenus <- scale_color_manual(name = colour_genus, values = MyPalette)
形成的输出仅包含 16 个值,因此当我尝试将其应用于具有 90 个因子的图形时,它抱怨我只有 16 个值
abundance <- runif(90, min = 10, max = 100)
my_data <- data.frame(colour_genus, abundance)
p <- ggplot(my_data, aes(x = colour_genus, y= abundance)) +
geom_bar(aes(color = colour_genus, fill = colour_genus), stat = "identity", position = "stack") +
labs(x = "", y = "Relative Abundance\n") +
theme(panel.background = element_blank())
p + theme(legend.text= element_text(size=7, face="bold"), axis.text.x = element_text(angle = 90)) + guides(fill=guide_legend(ncol=2)) + scale_fill_manual(values=colGenus)
显示如下错误: 错误:手动刻度中的值不足。需要 90 个,但只提供了 16 个。
非常感谢您的帮助。
当你在plotting前知道你所有的90个杆菌名字,你就可以试试了。
set.seed(123)
colour_genus <- sort(stringi::stri_rand_strings(90, 5))#to be random names. I sorted the vector to illustrate the output better (optional).
MyPalette <- sample(colors(), length(colour_genus))
# named vector for scale_fill
names(MyPalette) <- colour_genus
# data
abundance <- runif(90, min = 10, max = 100)
my_data <- data.frame(colour_genus, abundance)
# two sets to show results
set1 <- my_data[20:30,]
set2 <- my_data[25:35,]
ggplot(set1, aes(x = colour_genus, y= abundance)) +
geom_col(aes(fill = colour_genus)) +
scale_fill_manual(values = MyPalette)
ggplot(set2, aes(x = colour_genus, y= abundance)) +
geom_col(aes(fill = colour_genus)) +
scale_fill_manual(values = MyPalette)