R-线图中未显示ggplot2图例

R-线图中未显示ggplot2图例,r,ggplot2,plot,R,Ggplot2,Plot,我知道以前有人问过这个问题,我也看过很多链接,但没有一个对我的情况有帮助。 我正在为4条不同颜色的线绘制一个折线图。但是我不能让传奇出现 我已经读到,我需要把颜色属性放在图形的aes部分。这也没有成功 我有一个四列1000行的数据框。这里有一个小的可复制的例子,说明我的数据是什么样子的,以及我想如何绘制它 library(ggplot2) vec1 <- c(0.1, 0.2, 0.25, 0.12, 0.3, 0.7, 0.41) vec2 <- c(0.5, 0.4, 0.3,

我知道以前有人问过这个问题,我也看过很多链接,但没有一个对我的情况有帮助。 我正在为4条不同颜色的线绘制一个折线图。但是我不能让传奇出现

我已经读到,我需要把颜色属性放在图形的aes部分。这也没有成功

我有一个四列1000行的数据框。这里有一个小的可复制的例子,说明我的数据是什么样子的,以及我想如何绘制它

library(ggplot2)

vec1 <- c(0.1, 0.2, 0.25, 0.12, 0.3, 0.7, 0.41)
vec2 <- c(0.5, 0.4, 0.3, 0.55, 0.12, 0.12, 0.6)
vec3 <- c(0.01, 0.02, 0.1, 0.5, 0.14, 0.2, 0.5)
vec4 <- c(0.08, 0.1, 0.54, 0.5, 0.1, 0.12, 0.3)

df <- data.frame(vec1, vec2, vec3, vec4)

df_plot <- ggplot() +
  geom_line(data = df, color = "black", aes(x = c(1:7), y = df[,1], color = 
"black")) +
  geom_line(data = df, color = "blue", aes(x = c(1:7), y = df[,2], color = 
"blue")) +
  geom_line(data = df, color = "green", aes(x = c(1:7), y = df[,3], color = 
"green")) +
  geom_line(data = df, color = "yellow", aes(x = c(1:7), y = df[,4], color 
= "yellow")) +
  xlab("x axis") +
  ylab("y axis") +
  ggtitle("A random plot") +
  theme(legend.title = element_text("Four lines"), legend.position = 
"right")
库(ggplot2)

vec1首先:我看到很多人在这里通过首先创建单个向量来创建数据帧。我不知道这种做法起源于何处,但没有必要:

df1 <- data.frame(vec1 = c(0.1, 0.2, 0.25, 0.12, 0.3, 0.7, 0.41),
                  vec2 = c(0.5, 0.4, 0.3, 0.55, 0.12, 0.12, 0.6),
                  vec3 = c(0.01, 0.02, 0.1, 0.5, 0.14, 0.2, 0.5),
                  vec4 = c(0.08, 0.1, 0.54, 0.5, 0.1, 0.12, 0.3))
现在我们可以策划了。对于这种形式的数据,不需要为每个变量使用单独的几何图形,
aes()
自动处理颜色和图例。您可以使用
scale\u color\u manual
指定自定义颜色。我不知道黄色或绿色是很好的选择,但这里是:

df1 %>% 
  gather(Var, Val) %>% 
  mutate(x = rep(1:7, 4)) %>% 
  ggplot(aes(x, Val)) + 
    geom_line(aes(color = Var)) + 
    scale_color_manual(values = c("black", "blue", "green", "yellow"))


关键在于让数据具有正确的格式,并理解如何允许aes将变量映射到图表属性。

首先:我看到这里有很多人通过首先创建单个向量来创建数据帧。我不知道这种做法起源于何处,但没有必要:

df1 <- data.frame(vec1 = c(0.1, 0.2, 0.25, 0.12, 0.3, 0.7, 0.41),
                  vec2 = c(0.5, 0.4, 0.3, 0.55, 0.12, 0.12, 0.6),
                  vec3 = c(0.01, 0.02, 0.1, 0.5, 0.14, 0.2, 0.5),
                  vec4 = c(0.08, 0.1, 0.54, 0.5, 0.1, 0.12, 0.3))
现在我们可以策划了。对于这种形式的数据,不需要为每个变量使用单独的几何图形,
aes()
自动处理颜色和图例。您可以使用
scale\u color\u manual
指定自定义颜色。我不知道黄色或绿色是很好的选择,但这里是:

df1 %>% 
  gather(Var, Val) %>% 
  mutate(x = rep(1:7, 4)) %>% 
  ggplot(aes(x, Val)) + 
    geom_line(aes(color = Var)) + 
    scale_color_manual(values = c("black", "blue", "green", "yellow"))


关键是数据格式正确,并了解如何允许
aes
将变量映射到图表属性。

谢谢。我对您使用的%>%表示法不太熟悉,但我会仔细研究一下。它被称为管道,基本上它接受左侧操作的结果并将其传递给右侧的操作。有很多关于它的教程,例如,啊,好的。再次感谢您的帮助!非常感谢。我对您使用的%>%表示法不太熟悉,但我会仔细研究一下。它被称为管道,基本上它接受左侧操作的结果并将其传递给右侧的操作。有很多关于它的教程,例如,啊,好的。再次感谢您的帮助!