为线条 ggplot2 分配颜色

Posted

技术标签:

【中文标题】为线条 ggplot2 分配颜色【英文标题】:Assign color to lines ggplot2 【发布时间】:2016-04-13 10:03:53 【问题描述】:

我想使用 ggplot2 用 5 条不同的线绘制线图。我使用了以下代码。

plot <- ggplot() + 
  geom_line(data=MS, aes(x=date, y=MSCI.World.PI, color='MS')) +
  geom_line(data=S, aes(x=date, y=SandP.TR, color='S')) +
  geom_line(data=BR, aes(x=date, y=MSCI.BRIC.PI, color='BR')) +
  geom_line(data=HF, aes(x=date, y=HFRX, color='HF')) +
  geom_line(data=LP, aes(x=date, y=LPX50.TR, color='LP')) +
  scale_color_manual(values = c("red", "blue", "green", "yellow", "violet" )) +
  labs(color="Indices") +
  xlab('Time') +
  ylab('Price')
plot

结果如下图:

“错误”部分是颜色未按预期排序,这意味着第一行(“MS”)未分配给第一种颜色(“红色”)。似乎该行按字母顺序分配给颜色。

有什么方法可以改变分配,使第一行在 scale_color_manuel 语句中分配给第一种颜色,第二行分配给第二种颜色等等?

【问题讨论】:

您是否尝试在 scale_color_manual() 表达式中重新排序颜色? 另外,我不得不提一下,这可能不是使用 ggplot2 的最佳方式。相反,最好利用 ggplot2 中的美学 - 特别是颜色 - 来绘制多条线。在这里很难弄清楚,但我怀疑使用 rbind() 组合所有数据帧然后使用颜色美学会有所帮助。 @boshek 您必须将它们变成“整洁的数据”,以便每列都有一个值和一个因子,该因子是索引名称。如果你想要的话,你仍然必须控制因子水平来精确地着色。 当然。正是这种笨重的操作导致我首先使用 ggplot2、tidyr、dplyr 等。然后以这种方式返回并使用 ggplot 似乎违反直觉。 【参考方案1】:

将颜色指定为命名向量可以解决问题,并使映射明确:

scale_color_manual(
      values = c(
           MS="red",
           S="blue",
          BR="green",
          HF="yellow",
          LP="violet" ))

【讨论】:

以上是关于为线条 ggplot2 分配颜色的主要内容,如果未能解决你的问题,请参考以下文章

R语言ggplot2可视化:自定义设置x轴坐标轴线条的颜色(customize setting x axis line color of ggplot2 graph)

R语言使用ggplot2包使用geom_density()函数绘制密度图(自定义颜色填充线条色彩分组均值线)实战(density plot)

R语言ggplot2可视化设置数据点的大小设置数据点的颜色设置数据点边缘线条的厚度(point border thickness)实战

如何为ggplot2中具有稳定映射的分类变量分配颜色?

R语言ggplot2可视化基本散点图(设置X轴使用对数坐标)并把成对的数据点用线条(line)连接起来自定义配置线条颜色(Connecting Paired Points with lines)

难以获得混合线a和指向ggplot2中颜色和形状的点图例