gpt4 book ai didi

r - 将特定颜色分配给特定值

转载 作者:行者123 更新时间:2023-12-04 03:21:57 24 4
gpt4 key购买 nike

我要求 R 制作一系列情节。但是,ggplot2 分配给不同变量的颜色会因实际数据而异。我需要更多的一致性特别是我想要:

四是红色三要绿色两个是黄色的一个是白色的

根据以前的答案,我怀疑我需要订购关卡。有人可以帮帮我吗?

这里是一些示例数据:

df<-structure(list(`id` = structure(c(3L, 3L, 3L, 3L, 3L, 2L, 
3L, 3L, 1L, 3L, 4L, 3L, 3L, 3L, 3L, 3L, 2L, 4L, 3L, 3L, 2L, 3L,
2L, 4L, 2L, 4L, 3L, 3L, 2L, 3L, 4L, 3L, 3L, 2L, 3L, 3L, 4L, 3L,
1L, 3L, 4L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("ONE",
"TWO", "THREE", "FOUR"), class = "factor"), NAME = c("0", "0.25", "0.5",
"0.75", "1", "1.25", "1.5", "1.75", "2", "2.25", "2.5", "2.75",
"3", "3.25", "3.5", "3.75", "4", "4.25", "4.5", "4.75", "5",
"5.25", "5.5", "5.75", "6", "6.25", "6.5", "6.75", "7", "7.25",
"7.5", "7.75", "8", "8.25", "8.5", "8.75", "9", "9.25", "9.5",
"9.75", "10", "10.25", "10.5", "10.75", "11", "11.25", "11.5",
"11.75", "12", "12.25")), .Names = c("id", "NAME"), row.names = c("0",
"0.25", "0.5", "0.75", "1", "1.25", "1.5", "1.75", "2", "2.25",
"2.5", "2.75", "3", "3.25", "3.5", "3.75", "4", "4.25", "4.5",
"4.75", "5", "5.25", "5.5", "5.75", "6", "6.25", "6.5", "6.75",
"7", "7.25", "7.5", "7.75", "8", "8.25", "8.5", "8.75", "9",
"9.25", "9.5", "9.75", "10", "10.25", "10.5", "10.75", "11",
"11.25", "11.5", "11.75", "12", "12.25"), class = c("tbl_df",
"tbl", "data.frame"))

代码如下:

library(ggplot2) 
library(tidyr)

colors <- c("red","white","yellow","green")


df$NAME <- rownames(df)

x<-gather(df,NAME)
colnames(x)<-c("Name", "variable","value")

ggplot(x,
aes(x = Name, y = variable, fill = factor(value))) +
geom_tile() +
scale_fill_manual(values=colors)+
scale_x_discrete(name="Time Period", limits= rownames(df))

最佳答案

正如您所说,您需要指定因子水平的顺序:

x$value = factor(x$value, levels = c("ONE", "TWO", "THREE", "FOUR"))
# the order of the vector you pass to levels defines the order of the factor

然后你需要以相同的顺序定义你的颜色向量。

# "FOUR to be red THREE to be green TWO to be yellow ONE to be white"
colors <- c("white","yellow","green","red")

另一种方法是命名颜色向量(如下),但我更喜欢第一种方法。

colors <- c("red","white","yellow","green")
names(colors) = c("FOUR", "ONE", "TWO", "THREE")

colors
# FOUR ONE TWO THREE
# "red" "white" "yellow" "green"

无论哪种方式,您的绘图代码都应该可以正常工作。

关于r - 将特定颜色分配给特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30789837/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com