【发布时间】:2021-08-26 15:21:00
【问题描述】:
我有一个温度数据框,其中每一列代表从 1996 年到 2015 年的一年,行是从 7 月 1 日到 10 月 31 日的数据:
head(df)
[![数据帧头][1]][1]
我正在尝试使用x= DAYS 和y=temp per year 创建线图。当我在循环中使用DAYS 时,无论是aes() 还是aes_strint() 它都不会产生任何东西:
iterator <- c(colnames(df))[-1]
g <- ggplot(df, aes_string(x = 'DAY'))
for (i in iterator){
g <- g+ geom_line(aes_string(y=i))
}
print(g)
所以我添加了一个 index 列,它只是从 1 到 123 的整数。现在相同的代码绘制了一堆行但很奇怪:
df$index <- c(1:123)
iterator <- c(colnames(df))[-1]
iterator <- iterator[-21]
g <- ggplot(df, aes_string(x = 'index'))
for (i in iterator){
g <- g+ geom_line(aes_string(y=i))
}
print(g)
[![最终剧情][2]][2]
如您所见,每个列名都有一行,所有列名都堆叠在一起。这已经将垂直轴压缩得如此之多,以至于温度的变化是不可见的。我希望我的 y 轴从 50 变为 100,并且每个列名将有一行,其比例与其他列相同。我怎么做? [1]:https://i.stack.imgur.com/ruF11.png [2]:https://i.stack.imgur.com/gAvMe.png
【问题讨论】:
标签: r dataframe for-loop ggplot2