在同一图中绘制不同的变量R- ggplot2

时间:2020-09-05 20:15:58

标签: r dataframe ggplot2 dplyr

我有几个数据集,我的最终目标是从中绘制一个图表,每行代表给定信息的年度变化。最后,我将我的数据(按月结构)合并到一张表中,该表仅包含我要绘制的每个项目的年度平均值(列表示年份,而后一行表示4种不同元素的年度变化)

enter image description here

我有一个因素,即年份和4个不同的变量,它们读取年度变化,因此我想在同一空间上绘制它们。我的想法是按因子将4列合并为一列(折叠成每行一个观察值,然后在下一行中合并年份或因子),但似乎无法做到这一点。我的想法是,这将为我的y轴提供一个结构。想提出一些建议,并知道我的解决方法是否有效。我正在尝试ggplot2,但如果没有已定义(或预定义范围)的y轴,它似乎无法工作。谢谢

2 个答案:

答案 0 :(得分:1)

我建议采用下一种方法。作为下一个示例,您必须将数据的范围从宽变到长。这样就可以看到所有变量。由于未提供任何数据,因此将使用虚拟数据来草绘此解决方案。另外,您可以将线更改为您想要的其他几何图形,例如点:

library(tidyverse)
set.seed(123)
#Data
df <- data.frame(year=1990:2000,
                 v1=rnorm(11,2,1),
                 v2=rnorm(11,3,2),
                 v3=rnorm(11,4,1),
                 v4=rnorm(11,5,2))
#Plot
df %>% pivot_longer(-year) %>%
  ggplot(aes(x=factor(year),y=value,group=name,color=name))+
  geom_line()+
  theme_bw()

输出:

enter image description here

答案 1 :(得分:0)

我们可以使用melt中的reshape2,而无需加载多个其他软件包

library(reshape2)
library(ggplot2)
ggplot(melt(df, id.var = 'year'), aes(x = factor(year), y = value,
    group = variable, color = variable)) + 
  geom_line() 

-输出图

enter image description here


或者使用matplot中的base R

matplot(as.matrix(df[-1]), type = 'l', xaxt = 'n')

数据

set.seed(123)
df <- data.frame(year=1990:2000,
                 v1=rnorm(11,2,1),
                 v2=rnorm(11,3,2),
                 v3=rnorm(11,4,1),
                 v4=rnorm(11,5,2))
相关问题