我的数据框看起来像这样
" States X2010 X2011 X2012 X2013 X2014 X2015 X2016 Andhra pradhesh 116 99 2827 4827 1359 817 660 Arunachal pradhesh 0 0 0 0 0 35 Assam 0 0 0 742 0 0 38
如何在ggplot中绘图。我在这里尝试了所有发布的答案我的问题是,当它作为列名时,我不知道如何处理多年。 X2010 X2011 X2012 X2013 X2014 X2015 X2016。
答案 0 :(得分:0)
很难分辨出您发布的数据,但无论如何我都会对其进行拍摄。绘制时间序列数据时遇到的最大问题是数据是宽格式而不是长格式。如果将其转换为long,则会更容易。我使用tidyr
包编写了一个快速示例,以及一些适合我认为数据结构的随机样本数据(尽管如此,格式在问题中有很长的路要走。)通过这个例子,看看这样的事情是否适合你的问题。
set.seed(100)
df <- data.frame(States = c('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'),
X2010 = runif(10),
X2011 = runif(10),
X2012 = runif(10),
X2013 = runif(10),
X2014 = runif(10),
X2015 = runif(10),
X2016 = runif(10))
library('tidyr')
library('ggplot2')
library('stringr')
df <- gather(df, year, value, X2010:X2016)
df$year <- str_replace_all(df$year, 'X', '')
df$year <- as.numeric(df$year)
ggplot(df, aes(x = year, y = value, group = States, color = States)) + geom_line()
将大数据收集到长格式后,每个州和每年都会有一个唯一的行。同样,我无法确定这是否是您的数据的样子,但鉴于您的标题,我相当肯定重塑您的数据将大大有助于绘制时间序列。如果这不起作用,请务必将问题编辑为更具体,并包含更好的样本数据格式。