我有几个数据集,我的最终目标是从中绘制一个图表,每行代表给定信息的年度变化。最后,我将我的数据(按月结构)合并到一张表中,该表仅包含我要绘制的每个项目的年度平均值(列表示年份,而后一行表示4种不同元素的年度变化)>
我有一个因素,即年份和4个不同的变量,它们读取年度变化,因此我想在同一空间上绘制它们。我的想法是按因子将4列合并为一列(折叠成每行一个观察值,然后在下一行中合并年份或因子),但似乎无法做到这一点。我的想法是,这将为我的y轴提供一个结构。想提出一些建议,并知道我的解决方法是否有效。我正在尝试ggplot2,但如果没有已定义(或预定义范围)的y轴,它似乎无法工作。谢谢
答案 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()
输出:
答案 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()
-输出图
或者使用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))