我正在研究这个数据框:
Col0 <- c("AA", "BB", "CC", "DD","EE","FF")
Col1 <- c(2,2,2,6,1,1)
Col2 <- c(2,2,2,1,3,4)
Col3 <- c(2,2,3,4,6,6)
Col4 <- c(2,2,3,1,2,1)
Col5 <- c(2,1,1,1,1,4)
Col6 <- c(2,4,2,5,4,4)
Col7 <- c(2,4,2,5,4,4)
Col8 <- c(2,2,3,4,5,4)
Col9 <- c(1,3,3,2,2,2)
df<-data.frame(Col0,Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8,Col9)
我使用ggplot2
创建了一个情节Plot <- function(fun){
df<-melt(fun,id =c("Col0"))
colnames(df)[colnames(df) == 'value'] <- 'Val'
colnames(df)[colnames(df) == 'variable'] <- 'Col_i'
pl<- ggplot(df, aes(Col_i, Val, group=Col0)) + geom_line(aes(color=Col0))+theme(
axis.text.x = element_text(angle = 90, hjust = 1))+ ggtitle(paste("Plot"))+ labs(color = "Letters")+ theme( panel.border = element_rect(colour = "black", fill=NA, size=1))
print(pl)
}
Plotf <- Plot(df)
从假设df可以有n行开始,我需要知道如何只用一个函数打印n个图形(每行一个)。
答案 0 :(得分:3)
转置然后用facet绘图,见下文:
library(tidyr)
library(dplyr)
library(ggplot2)
df %>%
gather(Col, Val, -Col0) %>%
ggplot(aes(Col, Val, group = Col0, col = Col0)) +
geom_line() +
facet_grid(Col0 ~ .)
要分别绘制每个组,请尝试:
# split data for plotting
plotDat <- df %>%
gather(Col, Val, -Col0)%>%
split(Col0)
pdf("plots.pdf")
lapply(names(plotDat), function(i){
ggplot(plotDat[[i]], aes(Col, Val, group = Col0, col = Col0)) +
geom_line() +
ggtitle(paste("Plot", i))
})
dev.off()