【发布时间】:2018-11-30 15:10:36
【问题描述】:
考虑这个例子
data_frame(mylabel = c('month 18',
'month 19',
'month 20',
'month 21',
'month 22'),
value = c(5,10,-2,2,0),
time = c(1,2,3,4,5)) %>%
ggplot(aes( x= time, y = value, color = mylabel)) +
geom_point(size = 7)
在这里您可以看到变量 mylabel 具有自然顺序:第 18 个月在第 19 个月之前,依此类推。
但是,ggplot 选择的颜色不会保留这种自然顺序。在我的真实数据集中,我有大约 50 个不同的月份,我想使用一个色标来使这种增加更加直观(比如从冷到热)。
我该怎么做? 谢谢!
【问题讨论】:
-
你能提供预期的输出吗?
-
任何保留顺序的东西。说一些在第 18 个月和第 19 个月更冷,在第 21 个月和第 22 个月更热的色标。你明白我的意思吗?
-
解析
mylabel中的数字,然后将其用作连续变量并根据需要修复图例?还是您特别想要离散颜色而不是渐变? -
在您的示例中,保留了顺序,但因子将按字典顺序排序,因此您必须解决该问题,例如,如果您有
factor(paste('month', 1:12)),则顺序将为 1、10、11、12、2等。但就您的示例而言,您所要做的就是添加一个scale_color_manual()与您想要的任何颜色。见ggplot2.tidyverse.org/reference/scale_manual.html -
@qdread 谢谢你准确地解决了这个问题。如何避免手动重新排序因子?