首页 > 解决方案 > 无论R中有多少,如何将图中的所有因素设置为相同的颜色?

问题描述

我有一个带有 geom_area() 部分的图,它显示了在模拟的某个步骤中事件是否处于活动状态(感谢这个社区也帮助我!)。

当我只显示一次模拟运行时,它运行良好,但是我需要能够一次显示多个运行,以查看此事件在不同运行中的时间之间的任何差异。

我将 geom_area() 的填充设置为与运行编号相对应,并将位置设置为 position_dodge(0) 以便能够与区域重叠,这样颜色越浓,在该点上有活动的运行就越多。唯一的问题是我对区分运行不感兴趣,所以我希望它们都具有相同的颜色。通过简单地制作一个灰色 10 次的调色板,我设法做到了这一点,但这不是我可以手动完成的事情,因为我很快就会有 100 次运行的图表。

无论有多少,我怎样才能使所有因素都具有相同的颜色?或者,如果有更好的解决方案来显示如下图,它是什么?

包括我到目前为止管理的情节(这正是我需要的,只能扩展)和我用来制作它的代码:

在此处输入图像描述

ggplot(df,aes(x = step, y = count)) +
  geom_area(data = event, aes(x = step, y = pop_size * event, fill = as.factor(run_num)),
            inherit.aes = FALSE, position = position_dodge(0), alpha = 0.2, show.legend = FALSE) +
  geom_point(aes(color = breed), alpha = 0.7, size = 1) +
  scale_color_brewer(palette = "Set3") +
  # horrible hack incoming
  scale_fill_manual(values = c("lightgrey","lightgrey","lightgrey","lightgrey","lightgrey",
                               "lightgrey","lightgrey","lightgrey","lightgrey","lightgrey")) +
  coord_cartesian(ylim = c(0, pop_size))

标签: rggplot2colorsdata-visualization

解决方案


由于上面 da-wells 的评论解决了这个问题,他建议使用scale_fill_manual(values = rep("lightgrey", n_simulations))以确保调色板涵盖我拥有的许多因素。不敢相信我没想到!


推荐阅读