【问题标题】:Removing all colors from a ggplot2 linechart从 ggplot2 折线图中删除所有颜色
【发布时间】:2015-09-23 17:11:15
【问题描述】:

使用 RStudio 0.98.1103,我正在创建完全相同图表的两个版本:一个有颜色,一个没有。由于两个图表完全相同(除了颜色),我想避免再次输入几乎相同的命令。因此,我创建了彩色图,保存它,对其进行操作以使其成为黑灰白并保存缩小版:

library(ggplot2)

bp <- ggplot(data=PlantGrowth, aes(x=group, y=weight)) +
  geom_line(aes(color=group)) + theme(legend.position="none")
bp_bw <- bp + theme_bw() +
  geom_line() + theme(legend.position="none")
ggsave("bp_bw.png", bp_bw)

虽然bp 看起来很正常,但bp_bw 却不是。黑条后面仍然闪烁着模糊的颜色(红 - 绿 - 蓝):

特写:

我怎样才能摆脱这些颜色,即从bp 中完全删除所有颜色?唯一的限制:我必须先创建彩色图表(当然可以使用不同的顺序)。

【问题讨论】:

  • 我没有看到你说的模糊颜色颜色?您附上的图片对我来说看起来很正常,就像我自己运行代码时看到的情节一样。您能否更具体地说明您要消除的内容?
  • 我也无法复制它。当我将两个图都保存为 png 时,即使放大很多也看不到颜色。你是如何拯救他们的?
  • @SeñorO 和 Herka:我添加了一个特写。颜色真的存在。
  • @MERose 不用担心。我不知道为什么会这样,我无法复制它。我尝试了多种文件格式,但尤其是使用 png 时,我在缩放时仍然会出现清晰的线条。也许是切线,但是当您在另一个程序中打开/查看图像时问题是否仍然存在?
  • 奇怪 - 当我保存它时,我的线条也很清晰。

标签: r colors ggplot2


【解决方案1】:

我认为更好的解决方案是创建一个基础,只在需要时添加着色部分:

bp <- ggplot(data=PlantGrowth, aes(x=group, y=weight)) +
  theme_bw() + theme(legend.position="none")

bp_col <- bp + geom_line(aes(color=group))
bp_bw <- bp + geom_line()

【讨论】:

    【解决方案2】:

    这(或多或少)是有道理的。您的bp_bw 代码并没有去掉旧的彩色线条,它只是在顶部添加了黑色线条。显示/保存图像时的抗锯齿可以让边缘的一些颜色通过。

    我的建议是修改色阶而不是在顶部覆盖黑色:

    bp_bw2 = bp + scale_color_manual(values = rep("black", 20)) + theme_bw()
    

    这会将颜色更改为全黑,而不是在颜色之上绘制黑色。 rep("black", 20) 有点像黑客。显然values 没有被scale_color_manual 回收,但是没有使用额外的值,所以你需要给它一个至少与颜色数量一样长的向量。

    这还具有不需要重复调​​用geom 的优点,如果您之前定义了色标,这将覆盖它。如果您想更通用,还可以添加scale_fill_manual(),并且您可能希望指定guide = FALSE,这样您就不会得到一个非常无用的图例。

    您可能还想查看scale_colour_grey,因为它是黑白的并不意味着所有颜色都必须相同。

    【讨论】:

      猜你喜欢
      • 2019-11-05
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-08
      相关资源
      最近更新 更多