R ggplot2 for循环
R ggplot2 for loop
我正在尝试对 ggplot 中的 for 循环执行操作,我正在替换一个变量,该变量应指示对数据进行子集化的现有变量的名称
这是循环,但出现错误:
list1=c("name1","name2",...)
list2=c("name1","name2",...)
for (name in 1:2) {
g=ggplot(data=data[paste("data$MEPS %in% list",name,sep=""),],
aes(x=Year, y=RR, colour=MEPS, group=MEPS
))+
geom_line()+geom_point()+scale_y_continuous(breaks=seq(0, 100, 10))+
print(g)
}
但是我收到以下错误:
Error in seq.default(h[1], h[2], length = n) :
'to' cannot be NA, NaN or infinite
这看起来应该很容易——基本上我想绘制折线图,其中每个图都包含 list1
或 list2
中指定的特定区域的信息
编辑: 澄清一下,这段代码 "supposed" 要做的是生成两个 ggplot 对象,一个有 3 行,另一个有 2 行.这 3 行代表我想显示的项目,它们是 %in% list1,对于 list2 也是一样。这就是这里的混乱所在。
将以下示例作为解决问题的原型。我们有 mtcars
数据,并且想要每个原产国的 mpg 与 wt 的线图。
我可以循环遍历国家和 select 德国汽车,绘制它们,然后是日本汽车等等。相反,我为国家/地区定义了一个新因素,并根据 row.names
进行分配。使用组美学,ggplot 将继续为每个国家绘制一条单独的线。这个特定数据的可视化效果不是很好,但它确实为您提供了一个可以遵循的原型。
data(mtcars)
mymtcars<-mtcars
mymtcars$country<- c(rep("JP",3),rep("US",4),rep("DE",7),rep("US",3),"IT",rep("JP",3),rep("US",4),"IT","DE","UK","US",rep("IT",2),"SE")
ggplot(mymtcars, aes(x=wt, y=mpg, group=country)) + geom_line(aes(colour=country))
@Mamoun Benghezal 提供的代码运行得非常好!
for (name in 1:2) {
png(paste("plot",name,".png",sep=""),width=800, height=600)
g=ggplot(data=data[eval(parse(text = paste("data$MEPS %in% list",name,sep=""))),],
aes(x=Year, y=RR, colour=MEPS, group=MEPS))+
geom_line(size=.8)+scale_y_continuous(breaks=seq(0, 100, 10))+labs(y="Response Rate")+
coord_cartesian(ylim=c(0, 100))
print(g)
dev.off()
}
我正在尝试对 ggplot 中的 for 循环执行操作,我正在替换一个变量,该变量应指示对数据进行子集化的现有变量的名称
这是循环,但出现错误:
list1=c("name1","name2",...)
list2=c("name1","name2",...)
for (name in 1:2) {
g=ggplot(data=data[paste("data$MEPS %in% list",name,sep=""),],
aes(x=Year, y=RR, colour=MEPS, group=MEPS
))+
geom_line()+geom_point()+scale_y_continuous(breaks=seq(0, 100, 10))+
print(g)
}
但是我收到以下错误:
Error in seq.default(h[1], h[2], length = n) :
'to' cannot be NA, NaN or infinite
这看起来应该很容易——基本上我想绘制折线图,其中每个图都包含 list1
或 list2
编辑: 澄清一下,这段代码 "supposed" 要做的是生成两个 ggplot 对象,一个有 3 行,另一个有 2 行.这 3 行代表我想显示的项目,它们是 %in% list1,对于 list2 也是一样。这就是这里的混乱所在。
将以下示例作为解决问题的原型。我们有 mtcars
数据,并且想要每个原产国的 mpg 与 wt 的线图。
我可以循环遍历国家和 select 德国汽车,绘制它们,然后是日本汽车等等。相反,我为国家/地区定义了一个新因素,并根据 row.names
进行分配。使用组美学,ggplot 将继续为每个国家绘制一条单独的线。这个特定数据的可视化效果不是很好,但它确实为您提供了一个可以遵循的原型。
data(mtcars)
mymtcars<-mtcars
mymtcars$country<- c(rep("JP",3),rep("US",4),rep("DE",7),rep("US",3),"IT",rep("JP",3),rep("US",4),"IT","DE","UK","US",rep("IT",2),"SE")
ggplot(mymtcars, aes(x=wt, y=mpg, group=country)) + geom_line(aes(colour=country))
@Mamoun Benghezal 提供的代码运行得非常好!
for (name in 1:2) {
png(paste("plot",name,".png",sep=""),width=800, height=600)
g=ggplot(data=data[eval(parse(text = paste("data$MEPS %in% list",name,sep=""))),],
aes(x=Year, y=RR, colour=MEPS, group=MEPS))+
geom_line(size=.8)+scale_y_continuous(breaks=seq(0, 100, 10))+labs(y="Response Rate")+
coord_cartesian(ylim=c(0, 100))
print(g)
dev.off()
}