【问题标题】:How to specify the colour of specific data points?如何指定特定数据点的颜色?
【发布时间】:2015-10-14 21:30:09
【问题描述】:

我有一小部分数据,我想为每个点赋予不同的颜色(边框和填充),我已在数据中将其指定为额外的列。我尝试将这些分类为颜色而不是文本使用

colour = data[,5] 

colour <- as.character(data[,5])

但似乎两者都不起作用。 R一直只分配随机颜色,即。所有的红色都是相同的颜色,但不是红色!我的情节如下:

qplot(x, y, data, pch=21, col=Border, bg=Fill)

不知道还能做什么。

【问题讨论】:

  • ggplot 喜欢使用列名,而不是索引。因此,无论您的第 5 列的名称是什么,例如 "color_column",请执行 color = color_column
  • 此外,ggplot 与基本图形不同,因此 colbg 等基本图形选项将不起作用。填充颜​​色的 ggplot 参数是(非常直观)fill,因此您可以使用fill = fill_column。在这种情况下,您还需要选择一个可以填充的形状,试试shape = 22
  • 欢迎来到 SO。供将来参考,请阅读thisthis。如果您的问题符合这些准则,您更有可能获得帮助。
  • @Gregor 所以我的 pch、col、fill 命令现在运行良好,但我仍然无法让它注册正确的颜色。我试过colour = data["Fill"],其中“填充”是列的名称,但没有奏效。
  • 只需执行colour = Fill,其中Fill 是未加引号的列名称。您已经将数据传入,无需重新指定。

标签: r plot colors


【解决方案1】:

在没有看到您提供的示例数据的情况下,让我们使用ggplot2 内置的diamonds 数据集。

# really, let's use a subset
di = head(diamonds, 500)

我强烈建议使用ggplot 而不是qplot

ggplot(di, aes(x = carat, y = price, color = cut, fill = clarity)) +   
    geom_point(shape = 21)

aes() 中,您使用未引用 列名。对于常量,它aes()美学映射之外,在本例中为shape = 21。 (如果您更喜欢基本图形样式名称,也可以使用pch = 21)。

qplot 是一个快捷方式,它应该像这样工作:

qplot(data = di, x = carat, y = price, col = cut, fill = clarity, pch = 21)

但在这种情况下,它无法分辨数据中的内容(所有未加引号的列名)和不包含的内容(21),并且由于21 是一个数字,它假设形状会有连续的比例,这是不允许的。所以有错误。

更简单的情节可以使用qplot

qplot(data = di, x = carat, y = price, col = cut)

但对于这种更复杂的情况,您最好使用上述ggplot

【讨论】:

  • 好的,所以我有一个这样的数据表:Team ShotsPG Possession PassSuccess Fill Border 1 Manchester City 20.6 56.9 85.7 blue white 2 Arsenal 20.0 56.5 85.6 red white 所以我希望每个团队都有一个独特的颜色点。使用您提供的代码,我仍然遇到同样的问题 - 它没有将我的“填充”列读取为颜色列表。
  • 对,这不是 ggplot 的工作方式。您应该有一个列,该列是您希望为每个级别进行不同填充的一个因素。它会默认选择填充颜色并给你一个很好的图例。如果要指定颜色,请使用scale_fill_manual
  • 如果你用可重现的共享数据更新你的问题,比如dput(droplevels(head(data, 10))),我可能会更明确地显示出来。大多数对 ggplot 的介绍都会涵盖这一点。
  • 或者您可以在 SO 上看到类似的问题,例如 Pick color of choice... using ggplotggplot2 change colours how,这实际上是我几年前的回答。
猜你喜欢
  • 1970-01-01
  • 2018-06-23
  • 1970-01-01
  • 2016-10-23
  • 1970-01-01
  • 2018-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多