首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于分类数据的geom_ribbon填充自定义颜色

基于分类数据的geom_ribbon填充自定义颜色
EN

Stack Overflow用户
提问于 2017-10-10 17:38:34
回答 1查看 4.3K关注 0票数 1

我正在尝试使用scale_colour_manual中定义的自定义颜色来填充ggplot2中的geom_ribbon。下面是我从分类线图上的自定义ggplot2阴影错误区域学来的一个例子

代码语言:javascript
运行
复制
set.seed(12345)
data <- cbind(rep("A", 100), rnorm(100, 0, 1))
data <- rbind(data, cbind(rep("B", 100), rnorm(100, 5, 1)))
data <- rbind(data, cbind(rep("C", 100), rnorm(100, 10, 1)))
data <- rbind(data, cbind(rep("D", 100), rnorm(100, 15, 1)))
data <- cbind(rep(1:100, 4), data)
data <- data.frame(data)
names(data) <- c("num", "category", "value")
data$num <- as.numeric(data$num)
data$value <- as.numeric(data$value)
data$upper <- data$value+10
data$lower <- data$value-10

data = data[order(data$category, data$num),]

data$upperLoess = unlist(lapply(LETTERS[1:4], 
                                function(x) predict(loess(data$upper[data$category==x] ~ 
                                                            data$num[data$category==x]))))
data$lowerLoess = unlist(lapply(LETTERS[1:4], 
                                function(x) predict(loess(data$lower[data$category==x] ~ 
                                                            data$num[data$category==x]))))

ggplot(data, aes(num, value, colour=category, fill=category)) +
  scale_colour_manual(values = c("A"="black", "B"="red", "C"="magenta", "D"="green")) +
  geom_smooth(method="loess", se=FALSE) +
  geom_ribbon(aes(x=num, ymax=upperLoess, ymin=lowerLoess, fill=category),
              alpha=0.2)

色带错误:

显然,为类别变量“类别”定义的颜色不被使用。相反,默认的调色板(scale_colour_hue?)是使用的。我可以将fill参数放在aes之外:

代码语言:javascript
运行
复制
    ggplot(data, aes(num, value, colour=category, fill=category)) +
  scale_colour_manual(values = c("A"="black", "B"="red", "C"="magenta", "D"="green")) +
  geom_smooth(method="loess", se=FALSE) +
  geom_ribbon(aes(x=num, ymax=upperLoess, ymin=lowerLoess), fill="red", 
              alpha=0.2)

这会导致红丝带

有什么想法吗?非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-10 17:48:35

尝试使用在scale_fill_manual参数中定义的相同颜色添加scale_color_manual。

代码语言:javascript
运行
复制
ggplot(data, aes(num, value, colour=category, fill=category)) + 
    scale_colour_manual(values = c("A"="black", "B"="red", "C"="magenta", "D"="green")) +
    geom_smooth(method="loess", se=FALSE) +
    geom_ribbon(aes(x=num, ymax=upperLoess, ymin=lowerLoess, fill=category),
          alpha=0.2) +
    scale_fill_manual(values = c("A"="black", "B"="red", "C"="magenta", "D"="green")) 

配色

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46672736

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档