gpt4 book ai didi

r - 分配颜色以遵循特定顺序

转载 作者:行者123 更新时间:2023-12-02 02:34:13 25 4
gpt4 key购买 nike

我想绘制以下示例数据的时间序列图。

library(tidyverse)

df <- read.table(text = "
dates cat dog mat sat tap
1997-01-01 0.2 0.2 0.4 0.1 0.1
1997-01-02 0.3 0.2 0 0.5 0
1997-01-03 0.1 0 0.2 0.3 0.4
", header = TRUE,fill=TRUE)

df %>%
mutate(dates = as.Date(dates)) %>%
gather(variable, value, cat:tap) %>%
ggplot(aes(x = dates, y = value, fill = variable)) +
geom_area()

我创建了一个单独的文件并分配了一组颜色,并希望它遵循文件中的顺序。

col <- as.character(mycolor$color)
names(col) <- as.character(mycolor$grp)

但是,在使用 scale_fill_manual(values = col) 时,我总是按字母顺序排列。我应该在这里更改什么?

最佳答案

尝试使用颜色将变量设置为因素。由于您没有共享 mycolor,因此它必须包含与您 reshape 值相同的名称。代码如下:

library(tidyverse)
#Colors
col <- as.character(mycolor$color)
names(col) <- as.character(mycolor$grp)
#Data and plot
df %>%
mutate(dates = as.Date(dates)) %>%
gather(variable, value, cat:tap) %>%
mutate(variable=factor(variable,levels = as.character(mycolor$grp),ordered = T)) %>%
ggplot(aes(x = dates, y = value, fill = variable)) +
geom_area()+
scale_fill_manual(values = col)

在两侧使用可重现的数据:

#Mycolor
mycolor <- data.frame(color=c('yellow','purple','blue','pink','magenta'),
grp=c('tap','dog','cat','sat','mat'),stringsAsFactors = F)
#Colors
col <- as.character(mycolor$color)
names(col) <- as.character(mycolor$grp)
#Data and plot
df %>%
mutate(dates = as.Date(dates)) %>%
gather(variable, value, cat:tap) %>%
mutate(variable=factor(variable,levels = as.character(mycolor$grp),ordered = T)) %>%
ggplot(aes(x = dates, y = value, fill = variable)) +
geom_area()+
scale_fill_manual(values = col)

输出:

enter image description here

现在您可以看到使用 mutate()mycolor 的顺序如何反射(reflect)在最终图中:

关于r - 分配颜色以遵循特定顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64561121/

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