R:改变绘图颜色

时间:2021-01-22 04:11:19

标签: r plot data-visualization data-manipulation

我在 R 中绘制了以下图:

library(MASS)

a = rnorm(100, 10, 10)

b = rnorm(100, 10, 5)

c = rnorm(100, 5, 10)

group <- sample( LETTERS[1:4], 100, replace=TRUE, prob=c(0.25, 0.25, 0.25, 0.25) )

d = data.frame(a, b, c, group)
d$group = as.factor(d$group)

  parcoord(d[, c(3, 1, 2)], col = 1 + (0:149) %/% 50)
title(main = "Plot", xlab = "Variable", ylab = "Values")
axis(side = 2, at = seq(0, 5, 0.1),
     tick = TRUE, las = 1)

有人可以告诉我如何根据“d$group”的值为这个图中的每一行着色并在屏幕的角落添加一个图例吗?

我认为以下代码行会根据“d$group”的值更改行的颜色:

parcoord(d[, c(3, 1, 2)], col = d$group)

这行代码创建了一个图例:

legend( "topleft", c("A", "B", "C", "D"), 
text.col=c("blue", "red", "yellow", "green") )

title("Legend",
      cex.main = 1.1)

但我不确定如何让图例中的颜色与真实颜色相匹配。我试过了:

legend( "topleft", c("A", "B", "C", "D"), 
text.col= d$group)

但这没有用。有人可以告诉我如何解决这个问题吗?

谢谢

编辑:如果变量“C”是一个因素,有没有办法运行代码(在答案中提供)?

例如

a = rnorm(100, 10, 10)

b = rnorm(100, 10, 5)

c <- sample( LETTERS[1:2], 100, replace=TRUE, prob=c(0.5,0.5) )

group <- sample( LETTERS[1:4], 100, replace=TRUE, prob=c(0.25, 0.25, 0.25, 0.25) )

d = data.frame(a, b, c, group)
d$group = as.factor(d$group)
d$c = as.factor(d$c)


library(tidyverse)
library(ggplot2)
library(dplyr)

d %>% 
  mutate(rn = row_number()) %>% 
  pivot_longer(a:c) %>% 
  ggplot(aes(name, value, group = rn, color = group)) +
  scale_x_discrete(expand = expansion(0, 0)) +
  geom_line()

2 个答案:

答案 0 :(得分:2)

a = rnorm(100, 10, 10)

b = rnorm(100, 10, 5)

c <- sample( LETTERS[1:2], 100, replace=TRUE, prob=c(0.5,0.5) )

group <- sample( LETTERS[1:4], 100, replace=TRUE, prob=c(0.25, 0.25, 0.25, 0.25) )

d = data.frame(a, b, c, group)
d$group = as.factor(d$group)
d$c = as.factor(d$c)


library(tidyverse)
library(ggplot2)
library(dplyr)

d %>% 
  mutate(rn = row_number()) %>% 
  reshape2::melt(id=c("group","c","rn")) %>% 
  ggplot(aes(variable, value, group = rn, color = group)) +
  scale_x_discrete(expand = expansion(0, 0)) +
  geom_line()+
  facet_wrap(c~.,)

我对代码做了一些修改,你可以在代码中添加c作为因子。

答案 1 :(得分:1)

您可以使用 ggplot 执行此操作。这有点hacky,但是按行号将绘图设置为 group 将生成原始绘图中的所有行。然后将 color 美学设置为 group

library(tidyverse)

d %>% 
  mutate(rn = row_number()) %>% 
  pivot_longer(a:c) %>% 
  ggplot(aes(name, value, group = rn, color = group)) +
  scale_x_discrete(expand = expansion(0, 0)) +
  geom_line()

enter image description here