如何在R中绘制不同列的数据

How to plot data of different columns in R

我有以下数据框:

Class   Step    1   2   3
TestMe  1       5   10  6
TestMe  2       7   11  5
TestMe  3       9   13  9
TestMe  4       11  15  10
TestMe  5       13  18  4
TestMe  6       15  20  3
TestMe  7       17  23  8
TestMe  8       19  25  11
TestMe  9       21  27  13
TestMe  10      23  30  7

我想使用 R 生成一个图,使得

图中的每条线代表一个 运行(即三个 运行)。我尝试了以下方法:

dataset <- dataset %>% melt(id.vars = c("Class"))

dataset <- transform(dataset, value = as.numeric(value))

YaxisTitle <- "Fitness"

pp2 <- dataset %>% ggplot(aes(x=variable, y=value, group=Class, colour=Class)) +
  geom_line() +
  scale_x_discrete(breaks = seq(0, 10, 1)) +
  labs(x = as.character(dataset$Class), y = YaxisTitle) +
  theme(text = element_text(size=10),legend.position="none")

但我得到以下信息:

我该如何解决?

你的melt有问题。请参阅以下示例以重塑数据框和绘图。

library(tidyverse)

dataset <- read.table(text = "Class   Step    1   2   3
TestMe  1       5   10  6
TestMe  2       7   11  5
TestMe  3       9   13  9
TestMe  4       11  15  10
TestMe  5       13  18  4
TestMe  6       15  20  3
TestMe  7       17  23  8
TestMe  8       19  25  11
TestMe  9       21  27  13
TestMe  10      23  30  7",
                      header = TRUE, stringsAsFactors = FALSE)


dataset <- dataset %>% 
  gather(Variable, Value, starts_with("X"))

YaxisTitle <- "Fitness"

dataset %>% 
  ggplot(aes(x = Step, y = Value, group = Variable, colour = Variable)) +
  geom_line() +
  scale_x_discrete(breaks = seq(0, 10, 1)) +
  scale_color_manual(values = c("X1" = "Blue", "X2" = "Red", "X3" = "Gold")) +
  labs(x = as.character(dataset$Class), y = YaxisTitle) +
  theme_minimal() +
  theme(text = element_text(size=10),legend.position="none") 

我同意并使您的数据可重现。我不确定我的答案是否正是你想要的,但从你的数据来看,这对我来说似乎是最明显的。

library(tidyverse)

dataset <- tribble(
  ~Class,   ~Step,  ~"1", ~"2", ~"3",
  "TestMe",  1,       5,   10,  6,
  "TestMe",  2,       7,   11,  5,
  "TestMe",  3,       9,   13,  9,
  "TestMe",  4,       11,  15,  10,
  "TestMe",  5,       13,  18,  4,
  "TestMe",  6,       15,  20,  3,
  "TestMe",  7,       17,  23,  8,
  "TestMe",  8,       19,  25,  11,
  "TestMe",  9,       21,  27,  13,
  "TestMe",  10,      23,  30,  7,
)

YaxisTitle <- "Fitness"

dataset <- dataset %>%
  gather("1", "2", "3", key = "variable", value = "value") 

  ggplot(dataset, aes(x=Step, y=value, group=variable, colour=variable)) +
  geom_line() +
  scale_x_discrete(breaks = seq(0, 10, 1)) +
  labs(x = as.character(dataset$Class), y = YaxisTitle) +
  theme(text = element_text(size=10),legend.position="none")