首页 > 解决方案 > 在同一个图上绘制多列

问题描述

mydf <- data.frame(
  id = 1:12,
  x = rnorm(12),
  y = rnorm(12),
  z = rnorm(12)
)

# base r
plot(mydf$x)
plot(mydf$y)
plot(mydf$z)

其中一个看起来像

在此处输入图像描述

ggplot 中的等价物是什么,如果有的话,我可以在一个图上显示所有 3 个,使用颜色将它们分开吗?也许使用一条线?

mydf %>% ggplot(aes(x)) + geom_point()
Error: geom_point requires the following missing aesthetics: y

标签: rggplot2

解决方案


pivot_longer我们可以使用并立即绘制“长”格式

library(dplyr)
library(tidyr)
library(ggplot2)
mydf %>%
     mutate(rn = row_number()) %>% 
     pivot_longer(cols = -rn) %>%
     ggplot(aes(x = rn, y = value, color = name)) + 
          geom_point()

它也可能更好,geom_line因为它会更容易显示趋势

mydf %>%
  mutate(rn = row_number()) %>% 
  pivot_longer(cols = -rn) %>%
  ggplot(aes(x = rn, y = value, color = name)) + 
       geom_line()

在此处输入图像描述


base Rmatplot

matplot(as.matrix(mydf), type = 'l', col = c('red', 'green', 'blue'))
legend("topright", legend = names(mydf), fill = c('red', "green", "blue"))

在此处输入图像描述


推荐阅读