R 将特定颜色指定给特定值

R 将特定颜色指定给特定值,r,ggplot2,R,Ggplot2,我让R做一系列的情节。但是,ggplot2分配给不同变量的颜色因实际数据而异。我需要更多的一致性,尤其是我想要: 四个是红色的 三是绿色 两个是黄色的 一个是白色的 根据之前的回答,我想我需要对级别进行排序。有人能帮我吗 以下是一些示例数据: df<-structure(list(`id` = structure(c(3L, 3L, 3L, 3L, 3L, 2L, 3L, 3L, 1L, 3L, 4L, 3L, 3L,

我让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"))

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")
四个是红色三个是绿色两个是黄色一个是白色
代码使用的唯一包的颜色是
ggplot2
tidyr
(已编辑)。将来,不再使用“
dput(df)
…将df转换为x的代码…关于如何绘制
x
”的问题,只需使用
dput(x)
,因为转换是不相关的。Gregor。知道了。谢谢我得调查一下为什么这个被标记为重复的。在发布之前,我查看了参考的解决方案。这似乎很接近,但并没有帮助我了解我需要了解的东西。我认为Gregor的回答帮助我在目前的知识水平上实现了我的目标。。。。
# "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"