问题描述
这是我在这里的第一个问题,我是 R 的初学者。
我看过类似的问题,包括:
- Assign stable colors to ggplot when reordering and subsetting
- How to assign colors to categorical variables in ggplot2 that have stable mapping?
第一个,“将稳定的颜色分配给 ggplot 时”......等等,真的很接近我想要做的,但不完全是。让我以 mtcars 数据集为例进行说明。
假设我正在为马自达准备一些数字。每次我的观众在人偶上看到马自达 RX4 时,我都希望它是粉红色的,而且如果人偶中没有马自达(也许我只是在看某个特定人偶的竞争对手)我不想要任何其他汽车显示为粉红色。基本上,我想告诉 R:“如果马自达 RX4 在数据集中,则将其设为粉红色。如果马自达 RX4 不在数据集中,则根本不要使用粉红色。”
这是我的代码现在所处的位置(感谢我上面链接的问题):
data <- mtcars %>%
rownames_to_column() %>%
rowid_to_column() %>%
mutate(rowname = reorder(rowname,mpg))
fullplot <- data %>%
ggplot(aes(rowname,mpg,fill = rowname,color = rowname)) +
geom_col()+
coord_flip()
fullplot
fullplot 产生以下结果: full barchart,all cars
然后,我用两辆马自达做了一个缩小版:
reducedplot <- fullplot %+% droplevels(filter(data,rowid < 3))
最后,包含两辆马自达和另一辆车的第三个版本:
reducedplot2 <- fullplot %+% droplevels(filter(data,rowid < 4))
现在我已经建立了我的三个示例数字,我已经为我感兴趣的东西分配了颜色,我称之为mazda_constants:
mazda_constants <- c("Mazda RX4" = "hotpink1","Mazda RX4 Wag" = "deeppink3")
reducedplot +
scale_fill_manual(values = mazda_constants) +
scale_color_manual(values = mazda_constants)
我的问题是,这仅在我使用仅包含马自达的简化图时才有效。如果我尝试将其应用于 fullplot 甚至 reduceplot2,则会出现此错误:
reducedplot2 +
scale_fill_manual(values + mazda_constants) +
scale_color_manual(values = mazda_constants)
错误:手动刻度值不足。需要 3 个,但只提供了 2 个。
我理解为什么会发生这种情况,并且我理解 R 正在按照我的指示执行操作,但是我找不到解决方法。无论如何,有没有办法将粉红色分配给马自达?
请注意,我上传的图片不能超过一张——可能是因为我的新会员身份。我希望代码足够清晰以进行解释。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)