【问题标题】:Color points in scatter plot based on third variable in R基于R中的第三个变量的散点图中的色点
【发布时间】:2018-06-06 09:43:04
【问题描述】:

我目前正在编写一段代码,其中我正在绘制两个变量。但是,我的数据包含另外一个变量,我想用它来为散点图中的点着色并显示第三个变量的图例。 这是一个(简化的)示例数据框:

df  <- data.frame(id = 1:N, x1 = rnorm(N), x2 = rnorm(N), x3 = rnorm(N))

我只是尝试了这个(简化的)代码来将颜色附加到相关点:

plot(df$x1,df$x2, col=df$x3)

但是,这似乎不起作用。我会感谢有用的建议。我想要这样的情节(取自R-bloggers):

干杯

【问题讨论】:

  • x3 是连续的还是离散的?如果它是连续的,你需要想出一种方法来离散化......如果它是离散的,你可以使用col = factor(df$x3)

标签: r dataframe plot


【解决方案1】:

您需要为 'col' 使用正值。

快速修复: 使用 x3 = abs(rnorm(N))

更多控制:使用实际颜色而不是数字。字符串,例如“红色”、“蓝色”would work。或者您可以使用诸如colors &lt;- rainbow(10) 之类的调色板,它会为您提供一组颜色,您可以根据自己的需要进行分配

示例:

df  <- data.frame(id = 1:N, x1 = rnorm(N), x2 = rnorm(N), x3 = sample(rainbow(5),N,replace=T) )
plot(x=df$x1, y=df$x2, col=df$x3, pch=19)

编辑:

你也可以使用

rgb(red, green, blue, alpha, maxColorValue = 1)

在重新缩放后可以根据它们的值控制它们将映射到什么颜色

【讨论】:

  • 感谢您的修复。但是,x3 是一个介于 -1 和 1 之间的索引......所以我应该重新调整变量,例如0-1 还是 0-100?
  • 只加1?这仅取决于您要如何着色
  • 例如,如果您在 0 到 1 之间缩放,您可以使用 rgb,然后您可以选择当它们接近 1 时将接近哪种颜色
【解决方案2】:

类似的东西?

N=5
df  <- data.frame(id = 1:N, x1 = rnorm(N), x2 = rnorm(N), x3 = rnorm(N))%>%
  mutate(col=Hmisc::cut2(x3,g=3))
ggplot(df,aes(x=x1,y=x2,col=col))+geom_point()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 2017-01-29
    • 2019-11-23
    • 1970-01-01
    相关资源
    最近更新 更多