[R] [R studio] Plotting of line chart for each columns at 1 page

Subhamitra Patra @ubh@mitr@@p@tr@ @ending from gm@il@com
Wed Nov 21 09:27:13 CET 2018


 Sir, in the bold portion of the below code, I have some confusion which I
am mentioning below that

"ylab="MPG",main=names(MPG3)[i],*xaxt="n"*)
 axis(*1*,at=1:nrows,*labels=MPG3$Year*)"

1. Here, what *xaxt="n"* indicates? I think it indicates the no. of rows,
right?
2. 1 in the 2nd line represents the no. of graphs. Let suppose, 38
plots are having the same row, I need to mention them as *axis(38,
at=1:nrows)*, right?
3. *labels=**MPG3$Year *will give the name of all years in the X-axis,
right?

Kindly correct me if I am wrong.

Sir, here one thing I would like to ask, my data frequency is not yearly. I
obtained results from the daily data of the period from 1994-2017 (that
means the no. of rows will be 5655). But, as the daily period is very
unclear to mention in the X-axis, I wanted to give year name as the name of
the X-axis (that means, 1995, 1997, 1999 with the increment of 2 years up
to 2017).

Sir, please suggest me how to proceed with this?

Thank you very much for your kind help.


[image: Mailtrack]
<https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&>
Sender
notified by
Mailtrack
<https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&>
11/21/18,
1:46:50 PM

On Wed, Nov 21, 2018 at 1:21 PM Jim Lemon <drjimlemon using gmail.com> wrote:

> Now we're getting somewhere. I suspect that each Excel sheet looks
> something like this:
>
> Year    Tonga    Samoa    Fiji
> 2008    21.2      32.0       18.7
> ...
> 2017    23.7      31.9       19.3
> # in the above there are three columns (countries) and ten rows
> # import this sheet as "MPG3"
> nrows<-nrow(MPG3) # nrows equals 10
> ncols<-ncol(MPG3)  # ncols equals 3
> for(i in 1:ncols)
>  plot(seq(1:nrows,MPG3[,i],type="l",xlab="Distance",
>   ylab="MPG",main=names(MPG3)[i],xaxt="n")
>  axis(1,at=1:nrows,labels=MPG3$Year)
>
> I probably have the structure of the imported data frame wrong, but I
> think you can work that out.
>
> Jim
>
>
>
> On Wed, Nov 21, 2018 at 4:08 PM Subhamitra Patra <
> subhamitra.patra using gmail.com> wrote:
>
>> As per your suggestion, *"you will need to adjust the number of "x"
>> values to match the number of "y" values.  Now with the addition of the
>> nrow function, the code for each sheet will be*
>>
>>
>> *ncolumns<-ncol(mpg)*
>> *   nrows<-nrow(mpg) *
>>
>>
>> *for(i in
>> 1:ncolumns) plot(seq(1,500,length.out=10),mpg[,i],type="l",xlab="Distance",
>> ylab="MPG",main=names(mpg)[i])  *
>>
>> #####The no. of rows for the columns in one sheet will be the same. In
>> the X-axis, I need to mention Year which is the same for all columns in a
>> sheet. But, the starting year varies from one sheet to other.
>>
>> *Sir, please suggest in case of any mistakes.*
>>
>> Second, I will definitely consider your suggestions about the division of
>> sample by similar characteristics so that it can be easier to show in
>> graphical. Thank you very much, sir, for such creative and wonderful
>> suggestions.
>>
>>
>>
>> [image: Mailtrack]
>> <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&> Sender
>> notified by
>> Mailtrack
>> <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&> 11/21/18,
>> 10:35:03 AM
>>
>> On Wed, Nov 21, 2018 at 9:40 AM Jim Lemon <drjimlemon using gmail.com> wrote:
>>
>>> For your first question, yes, you will need to adjust the number of "x"
>>> values to match the number of "y" values. You can use the "nrow" function
>>> to get that number. I don't really know what the abscissa scale is on your
>>> plots, I just made up the data I used.
>>>
>>> If you are comparing countries, you may want to divide the results into
>>> countries of different characteristics, perhaps GDP or similar. Otherwise
>>> you will end up with a quite large PDF page. This is okay if you are
>>> viewing it electronically, but will present a challenge in hard copy.
>>>
>>> Jim
>>>
>>> On Wed, Nov 21, 2018 at 2:51 PM Subhamitra Patra <
>>> subhamitra.patra using gmail.com> wrote:
>>>
>>>> Hello Sir,
>>>>
>>>> Thank you very much. I will try it out and will let you the result.
>>>>
>>>> The no. of rows varies per sheet by a different number of observations.
>>>> Due to different no. of rows or observations, I separated the columns in
>>>> different sheets.
>>>>
>>>> *Will a different number of rows create a problem for appending all
>>>> plots?*
>>>>
>>>> Concerning your last suggestion "*This seems like a lot of plots, and
>>>> I suspect that you could work out a better way to display all this
>>>> information.*",  I am doing a multi-country study and obtained results
>>>> for each country. I would summarize the final result at the end. But, for
>>>> displaying the information for each country, I thought the plot is the best
>>>> way to give a supplementary result on each country. Sir, in this context, I
>>>> would like to take your suggestion that Is the way what I am doing, right
>>>> to proceed? If any alternative way is available, please suggest me.
>>>>
>>>> Thank you very much, Sir, for your kind help and suggestions.
>>>>
>>>> [image: Mailtrack]
>>>> <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&> Sender
>>>> notified by
>>>> Mailtrack
>>>> <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&> 11/21/18,
>>>> 9:12:14 AM
>>>>
>>>> On Wed, Nov 21, 2018 at 8:18 AM Jim Lemon <drjimlemon using gmail.com> wrote:
>>>>
>>>>> I assume that you are importing the Excel sheets separately. When you
>>>>> import a sheet, you can get the number of columns with this:
>>>>>
>>>>> ncol(<name of data frame>)
>>>>>
>>>>> Using the data frame "mpg" that I created:
>>>>>
>>>>> ncolumns<-ncol(mpg)
>>>>> ncolumns
>>>>> [1] 38
>>>>>
>>>>> You can then substitute "ncolumns" each time you import another sheet.
>>>>> How you want to deal with the varying numbers of columns you will get is
>>>>> another matter. One way is to work out the total number of plots you want
>>>>> and put them all onto one PDF page. Say you have 50 plots overall. You
>>>>> could start a very big PDF page:
>>>>>
>>>>> pdf("allplots.pdf",width=30,height=15)
>>>>> par(mfrow=c(5,10))
>>>>> # import your first sheet here (38 columns)
>>>>> ncolumns<-ncol(mpg)
>>>>> for(i in 1:ncolumns)
>>>>>  plot(seq(1,500,length.out=10),mpg[,i],type="l",xlab="Distance",
>>>>>   ylab="MPG",main=names(mpg)[i])# import your second sheet here, say
>>>>> 10 columns
>>>>> # import your second sheet here, (10 columns)
>>>>> ncolumns<-ncol(mpg1)
>>>>> for(i in 1:ncolumns)
>>>>>  plot(seq(1,500,length.out=10),mpg1[,i],type="l",xlab="Distance",
>>>>>   ylab="MPG",main=names(mpg)[i])# import your third sheet here, say 2
>>>>> columns
>>>>> # import your second sheet here, (2 columns)
>>>>> ncolumns<-ncol(mpg2)
>>>>> for(i in 1:ncolumns)
>>>>>  plot(seq(1,500,length.out=10),mpg2[,i],type="l",xlab="Distance",
>>>>>   ylab="MPG",main=names(mpg)[i])
>>>>> # finish plotting
>>>>> dev.off()
>>>>>
>>>>> You would then have 50 plots on the PDF page. I am assuming that all
>>>>> of your sheets have the same number of rows and a few other things. This
>>>>> seems like a lot of plots, and I suspect that you could work out a better
>>>>> way to display all this information.
>>>>>
>>>>> Jim
>>>>>
>>>>>
>>>>> On Wed, Nov 21, 2018 at 1:20 PM Subhamitra Patra <
>>>>> subhamitra.patra using gmail.com> wrote:
>>>>>
>>>>>> Hello Sir,
>>>>>>
>>>>>> Thanks, now I understood and will check them out.
>>>>>>
>>>>>> One more thing I want to ask that I have 1 excel file with multiple
>>>>>> (i.e. 12 sheets). Each sheet contains different number of columns, for
>>>>>> instance, 1st sheet contains 38 columns, 2nd sheet contains 10 columns,
>>>>>> Third 2 columns, 4th 1 column and so on. Actually, due to some missing
>>>>>> observations in these columns, I couldn't add them in 1 sheet.
>>>>>>
>>>>>> As you suggested the below code in the last mail,
>>>>>>
>>>>>> par(mfrow=c(4,10))
>>>>>> for(i in 1:38)
>>>>>>  plot(seq(1,500,length.out=10),mpg[,i],type="l",xlab="Distance",
>>>>>>   ylab="MPG",main=names(mpg)[i])
>>>>>> dev.off()
>>>>>>
>>>>>> Do I need to run the code separately for each sheet?
>>>>>>
>>>>>> Actually, in par (mfrow=c(4,10)), the plot for 38 columns will be
>>>>>> added, the space for extra 2 will remain as empty. So, I thought to add
>>>>>> plots for the columns from the next sheet in those emptied space.
>>>>>>
>>>>>> Is there any way that I can add plots from the next sheets of the
>>>>>> same excel file in the emptied space? In other words, Is there any way to
>>>>>> append plots from all sheets?
>>>>>>
>>>>>> Kindly help a new R learner Sir for which I shall be always grateful
>>>>>> to you.
>>>>>>
>>>>>> Thank you very much for your kind help.
>>>>>>
>>>>>>
>>>>>>
>>>>>> [image: Mailtrack]
>>>>>> <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&> Sender
>>>>>> notified by
>>>>>> Mailtrack
>>>>>> <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&> 11/21/18,
>>>>>> 7:30:30 AM
>>>>>>
>>>>>> On Wed, Nov 21, 2018 at 7:17 AM Jim Lemon <drjimlemon using gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Hi Subhamitra,
>>>>>>>
>>>>>>> 1. Here I manufacture some data so that the example is
>>>>>>> "reproducible", that is anyone can run the code and get the same output
>>>>>>> that I do. Yes, veh1...veh38 are the names of the variables.
>>>>>>>
>>>>>>> 2. Here I join the 38 variables I created into a data frame, which I
>>>>>>> think is the input for your plotting routine. This names of the columns of
>>>>>>> the data frame become the names of the variables.
>>>>>>>
>>>>>>> When you say that you want the column names as the "header" (title)
>>>>>>> of each plot, I think if you change the plotting loop to this:
>>>>>>>
>>>>>>> pdf("mpg.pdf",width=30,height=12)
>>>>>>> par(mfrow=c(4,10))
>>>>>>> for(i in 1:38)
>>>>>>>  plot(seq(1,500,length.out=10),mpg[,i],type="l",xlab="Distance",
>>>>>>>   ylab="MPG",main=names(mpg)[i])
>>>>>>> dev.off()
>>>>>>>
>>>>>>> you will get what you requested. Remember that I have done this in
>>>>>>> base graphics, not ggplot.
>>>>>>>
>>>>>>> Jim
>>>>>>>
>>>>>>> On Wed, Nov 21, 2018 at 12:37 PM Subhamitra Patra <
>>>>>>> subhamitra.patra using gmail.com> wrote:
>>>>>>>
>>>>>>>> Hello Sir,
>>>>>>>>
>>>>>>>> Thanks, I'll check them out.
>>>>>>>>
>>>>>>>> But, I am not understanding 2 points of your suggestion.
>>>>>>>>
>>>>>>>> 1. In the line,* "*for(i in 1:38) assign(paste0("veh",i),rep(sam
>>>>>>>> ple(10:35,1),10)+runif(10,-4,*4))", *what veh, rep(sam
>>>>>>>> ple(10:35,1),10)+runif(10,-4,4)) indicate? Here veh indicates
>>>>>>>> columns right?
>>>>>>>> *2. In the
>>>>>>>> line, mpg<-data.frame(veh1,veh2,veh3,veh4,veh5,veh6,veh7,veh8,veh9,veh10,*
>>>>>>>> * veh11,veh12,veh13,veh14,**veh15,veh16,veh17,veh18,veh19,**veh20,*
>>>>>>>> * veh21,veh22,veh23,veh24,**veh25,veh26,veh27,veh28,veh29,**veh30,*
>>>>>>>> * veh31,veh32,veh33,veh34,**veh35,veh36,veh37,veh38)  ** , *veh[i]
>>>>>>>> indicates column sequence, right? I need to give column names as the header
>>>>>>>> of their respective graphs. Please suggest me How to add this?
>>>>>>>>
>>>>>>>>
>>>>>>>> I am very new to R and therefore asking you these queries which
>>>>>>>> might be simple for you.
>>>>>>>>
>>>>>>>> I expect positive help from you.
>>>>>>>>
>>>>>>>> Thanks for your kind help.
>>>>>>>> [image: Mailtrack]
>>>>>>>> <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&> Sender
>>>>>>>> notified by
>>>>>>>> Mailtrack
>>>>>>>> <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&> 11/21/18,
>>>>>>>> 7:02:18 AM
>>>>>>>>
>>>>>>>>
>>>>>>>> On Wed, Nov 21, 2018 at 4:38 AM Jim Lemon <drjimlemon using gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Hi Subhamitra,
>>>>>>>>> As Bert noted, you are mixing base and grid graphics. Here is a
>>>>>>>>> simple
>>>>>>>>> way to get a plot like what you described. It will probably take
>>>>>>>>> more
>>>>>>>>> work to find what you actually do want and discover how to get it.
>>>>>>>>>
>>>>>>>>> for(i in 1:38)
>>>>>>>>> assign(paste0("veh",i),rep(sample(10:35,1),10)+runif(10,-4,4))
>>>>>>>>> mpg<-data.frame(veh1,veh2,veh3,veh4,veh5,veh6,veh7,veh8,veh9,veh10,
>>>>>>>>>  veh11,veh12,veh13,veh14,veh15,veh16,veh17,veh18,veh19,veh20,
>>>>>>>>>  veh21,veh22,veh23,veh24,veh25,veh26,veh27,veh28,veh29,veh30,
>>>>>>>>>  veh31,veh32,veh33,veh34,veh35,veh36,veh37,veh38)
>>>>>>>>> pdf("mpg.pdf",width=30,height=12)
>>>>>>>>> par(mfrow=c(4,10))
>>>>>>>>> for(i in 1:38)
>>>>>>>>>  plot(seq(1,500,length.out=10),mpg[,i],type="l",xlab="Distance",
>>>>>>>>>   ylab=names(mpg)[i],main="MPG by distance")
>>>>>>>>> dev.off()
>>>>>>>>>
>>>>>>>>> Jim
>>>>>>>>>
>>>>>>>>> On Wed, Nov 21, 2018 at 5:19 AM Subhamitra Patra
>>>>>>>>> <subhamitra.patra using gmail.com> wrote:
>>>>>>>>> >
>>>>>>>>> > Dear R users,
>>>>>>>>> >
>>>>>>>>> > I have one excel file with 5 sheets. The no. of columns vary for
>>>>>>>>> each
>>>>>>>>> > sheet. The 1st sheet consists of 38 columns. So, I want to plot
>>>>>>>>> 38 separate
>>>>>>>>> > line charts and arrange them in par(mfrow = c(4, 10)) order.
>>>>>>>>> Please suggest
>>>>>>>>> > me how to do this. I have tried with the following code by
>>>>>>>>> running a loop
>>>>>>>>> > inside of a sheet, but it is not working. Further, I want to run
>>>>>>>>> loops for
>>>>>>>>> > each sheet.
>>>>>>>>> >
>>>>>>>>> > par(mfrow = c(4, 10))
>>>>>>>>> > loop.vector <- 1:38
>>>>>>>>> > for (i in loop.vector)
>>>>>>>>> > x <- JJ[,i]
>>>>>>>>> > library(ggplot2)
>>>>>>>>> >   library(cowplot)
>>>>>>>>> >   plot.mpg <- ggplot(mpg, aes(x,
>>>>>>>>> >                               main = paste ("country", i),
>>>>>>>>> >                               xlab = "Scores",
>>>>>>>>> >                               xlim = c(1,500)
>>>>>>>>> >                               y = colnames[i,], colour =
>>>>>>>>> factor(cyl))) +
>>>>>>>>> >   geom_line(size=2.5)
>>>>>>>>> > save_plot("mpg.png", plot.mpg,
>>>>>>>>> >           base_aspect_ratio = 1.3)
>>>>>>>>> >
>>>>>>>>> > I want to give my X axis name as scores of (1,500) and Y axis as
>>>>>>>>> the
>>>>>>>>> > particular column names for all graphs.
>>>>>>>>> >
>>>>>>>>> > Please suggest.
>>>>>>>>> >
>>>>>>>>> > Thanks in advance.
>>>>>>>>> >
>>>>>>>>> > --
>>>>>>>>> > *Best Regards,*
>>>>>>>>> > *Subhamitra Patra*
>>>>>>>>> > *Phd. Research Scholar*
>>>>>>>>> > *Department of Humanities and Social Sciences*
>>>>>>>>> > *Indian Institute of Technology, Kharagpur*
>>>>>>>>> > *INDIA*
>>>>>>>>> >
>>>>>>>>> >
>>>>>>>>> >
>>>>>>>>> >
>>>>>>>>> >
>>>>>>>>> >
>>>>>>>>> >
>>>>>>>>> >
>>>>>>>>> > [image: Mailtrack]
>>>>>>>>> > <
>>>>>>>>> https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&
>>>>>>>>> >
>>>>>>>>> > Sender
>>>>>>>>> > notified by
>>>>>>>>> > Mailtrack
>>>>>>>>> > <
>>>>>>>>> https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&
>>>>>>>>> >
>>>>>>>>> > 11/20/18,
>>>>>>>>> > 11:49:42 PM
>>>>>>>>> >
>>>>>>>>> >         [[alternative HTML version deleted]]
>>>>>>>>> >
>>>>>>>>> > ______________________________________________
>>>>>>>>> > R-help using r-project.org mailing list -- To UNSUBSCRIBE and more,
>>>>>>>>> see
>>>>>>>>> > https://stat.ethz.ch/mailman/listinfo/r-help
>>>>>>>>> > PLEASE do read the posting guide
>>>>>>>>> http://www.R-project.org/posting-guide.html
>>>>>>>>> > and provide commented, minimal, self-contained, reproducible
>>>>>>>>> code.
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> *Best Regards,*
>>>>>>>> *Subhamitra Patra*
>>>>>>>> *Phd. Research Scholar*
>>>>>>>> *Department of Humanities and Social Sciences*
>>>>>>>> *Indian Institute of Technology, Kharagpur*
>>>>>>>> *INDIA*
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> *Best Regards,*
>>>>>> *Subhamitra Patra*
>>>>>> *Phd. Research Scholar*
>>>>>> *Department of Humanities and Social Sciences*
>>>>>> *Indian Institute of Technology, Kharagpur*
>>>>>> *INDIA*
>>>>>>
>>>>>
>>>>
>>>> --
>>>> *Best Regards,*
>>>> *Subhamitra Patra*
>>>> *Phd. Research Scholar*
>>>> *Department of Humanities and Social Sciences*
>>>> *Indian Institute of Technology, Kharagpur*
>>>> *INDIA*
>>>>
>>>
>>
>> --
>> *Best Regards,*
>> *Subhamitra Patra*
>> *Phd. Research Scholar*
>> *Department of Humanities and Social Sciences*
>> *Indian Institute of Technology, Kharagpur*
>> *INDIA*
>>
>

-- 
*Best Regards,*
*Subhamitra Patra*
*Phd. Research Scholar*
*Department of Humanities and Social Sciences*
*Indian Institute of Technology, Kharagpur*
*INDIA*

	[[alternative HTML version deleted]]



More information about the R-help mailing list