我正在尝试使用ggplot2
使用for
循环为我的数据创建多个图表。为此,我试图打印返回错误的ggplot
对象
[.data.frame
中的错误(df ,,(i)):选择了未定义的列。
此外,我无法在图表上打印图例。如果我不打印它会显示一个图表。
for(i in seq(from=2, to=ncol(pvp), by=4)){
sq= as.numeric(c(1,(i):(i+3)))
print(sq)
df=pvp[,sq]
print(head(df))
colordf=colnames(df)[((i):(i+3))]
p=ggplot(df,aes(x=df$tot_urls_read)) +
geom_line(aes(y=df[,(i)]),color="red")
p=p+ geom_line(aes(y=df[,(i+1)]),color="green")
p=p+ geom_line(aes(y=df[,(i+2)]),color="blue")
p=p+ geom_line(aes(y=df[,(i+3)]),color="black") +
xlab("Percentage") +
ylab("Pvs") +
scale_fill_identity(name = '', guide = 'legend',labels = colordf) +
scale_colour_manual(name = 'Topic lines', values =c('red'='red','green'='green','blue'='blue','black'='black'),
labels = colordf)
print(p)
}
这是我数据的一部分。其中有更多列
tot_urls_read Andhra Goa Maharashtra Karnataka UP MP West Bengal Assam
1 1 1 100.00000 100.00000 100.00000 100.00000 100.00000 100.00000 100.00000 100
2 2 2 51.28552 50.25325 50.00000 50.00000 50.00000 51.95487 50.70178 50
3 3 3 34.70799 33.67254 33.33333 33.33333 33.33333 35.23031 33.90084 33
4 4 4 26.28165 25.26571 25.00000 25.00000 25.00000 26.73067 25.36423 25
5 5 5 21.18226 20.31540 20.00000 20.00000 20.00000 21.62096 20.48651 22
6 6 6 17.83460 16.92501 16.66667 16.66667 16.76647 18.20869 16.99758 16
如何使用for循环创建多个图表并提供标题? 我没有这个想法,似乎到处都是。
非常感谢任何帮助。
答案 0 :(得分:1)
要添加图例,您需要正确映射相应的美学。不是绘制四个不同的geom_lines,而是将数据重新整形为长形并绘制同一调用中的所有行:
library(ggplot2)
for(i in seq(from=2, to=ncol(pvp), by=4)){
sq= as.numeric(c(1,(i):(i+3)))
df=pvp[,sq]
library(tidyr)
dft <- gather(df,key, value,-tot_urls_read)
p=ggplot(dft,aes(x=tot_urls_read)) +
geom_line(aes(y=value,color=key)) +
xlab("Percentage") +
ylab("Pvs") +
scale_color_manual(values = c("red","green","blue","black"))
print(p)
}