2016-09-19 1 views
1

Мне нужна помощь, чтобы barplot несколько файлов в цикле. Я создал функцию, чтобы barplot этих различные файлов для только два столбцов из 5 столбцов входного файл содержит, а затем вызвать функциюсоздайте функцию для barchart и вызовите ее в цикле и сохраните все графики

bar.plot <- function(col_name1, col_name2,input_file, lable1, lable2) 

{ 

    barplot(col_name1,names.arg = col_name2, xlab = "label1", ylab = "lable2", 
col= "blue",main = "bar plot of average",border = "red") 

    box() 

    } 

#call the function for 10 files 
    i <- 1 

    for (i in 1:10) 
    { 

    filename <_paste("C:/Users/admin/GoogleDrive/Vidya/R/document/Group_",i,".csv",sep = "") 
    group <- read.csv(filename) 


    lablex <- "average" 

    labley <- "master id" 

    bar.plot(group$total_pause_time,group$employee_id, group, lablex, labley) 

    } 

выходного график показывает xlable, как label1 и ylable, как lable2, даже если я вошел " средний "in lablex and" master id "in labley. Также расскажите, как сохранить эти разные сюжеты с 10 разными именами, например. plot1.jpg к plot10.jpg

ответ

1

Это позволит создать PDF-файл из ваших десяти отдельных участков

bar.plot <- function(col_name1, col_name2,input_file, lable1, lable2) 
{ 
    barplot(col_name1,names.arg = col_name2,xlab=label1,ylab=label2, 
col= "blue",main = "bar plot of average",border = "red") 
    box() 
    } 

#call the function for 10 files 
label1 <- "average" 
label2 <- "master id" 

setwd("C:/Users/admin/GoogleDrive/Vidya/R/document/Group_/") 
filename <- list.files(pattern = ".csv") 
myfiles <- lapply(filename, read.csv) 

    for (i in myfiles) 
    { 
    group <- data.frame(myfiles[i]) 
    jpeg(paste(i,".jpg")) 
    bar.plot(group$total_pause_time,group$employee_id,label1,label2) 
    dev.off() 
    } 

Sample plot

+0

привет, этот код сохраняет все графики в одном PDF-файле, но все же лабли не идут как "средний и" главный id " –

+0

@vidyanair надеюсь, это может быть полезно для вас –

+0

kumar ok..i попробует –

0

Попробуйте это:

bar.plot <- function(col_name1, col_name2,input_file, lable1, lable2) { 
barplot(col_name1,names.arg = col_name2, xlab = lable1, ylab = lable2, 
col= "blue",main = "bar plot of average",border = "red") 
box() 
} 

#call the function for 10 files 
for (i in 1:10){ 
filename <-paste("C:/Users/admin/GoogleDrive/Vidya/R/document/Group_",i,".csv",sep = "") 
    group <- read.csv(filename) 
lable1 <- "average" 
lable2 <- "master id" 
bar.plot(group$total_pause_time,group$employee_id, group, lable1, lable2) 
dev.copy(jpg,paste("C:/Users/admin/GoogleDrive/Vidya/R/document/plot",i,".jpg) 
dev.off() 
} 
+0

не working..still показывая lable1 и lable2 вместо «average» и «master id» .. и jpg не сохраняется .. –

+0

если эти файлы, group1 to group10 уже показаны в глобальной среде, тогда нет необходимости читать .csv..в этом случае, как это сделать..means, я хочу напрямую импортировать эти файлы из глобальной среды, одновременно увеличиваю их имена lfom group1 to group10 –