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

Subhamitra Patra @ubh@mitr@@p@tr@ @ending from gm@il@com
Mon Dec 17 08:13:00 CET 2018

```Hello Sir,

Thank you very much for your excellent guidance to a new R learner.

I tried with your suggested code and got the expected results, but for the
2 CSV files (i.e. EMs2.1. and EMs.3.1), the date column is not coming in
the X-axis (shown in the last row of the attached result Pdf file).  I
think I need to increase more or less than 229 in the year-mids because for
both the CSV files, starting date is 03-01-2002 and 04-07-2001
(date-month-year) for EMs 2.1. and EMs 3.1. respectively. *Sir, hence I am
quite confused for the logic behind the fixing of year_mids*. For your
convenience, I am attaching both the code and result file.

pdf("EMs1.pdf",width=20,height=20)
par(mfrow=c(5,4))
# import your first sheet here (16 columns)
ncolumns<-ncol(EMs1.1)
for(i in 1:ncolumns) {
plot(EMs1.1[,i],type="l",col = "Red", xlab="Time",
ylab="APEn", main=names(EMs1.1)[i],xaxt="n")
year_mids<-seq(182,5655,by=229)
axis(1,at=year_mids,labels=1994:2017)
}
#import your second sheet here, (1 column)
ncolumns<-ncol(EMs2.1)
for(i in 1:ncolumns) {
plot(EMs2.1[,i],type="l",col = "Red", xlab="Time",
ylab="APEn", main=names(EMs2.1)[i],xaxt="n")
year_mids<-seq(182,3567,by=229)
axis(1,at=year_mids,labels=2002:2017)
}
# import your Third sheet here, (1 column)
ncolumns<-ncol(EMs3.1)
for(i in 1:ncolumns) {
plot(EMs3.1[,i],type="l",col = "Red", xlab="Time",
ylab="APEn", main=names(EMs3.1)[i],xaxt="n")
year_mids<-seq(182,3698,by=229)
axis(1,at=year_mids,labels=2001:2017)
}
# import your fourth sheet here, (1 column)
ncolumns<-ncol(EMs4.1)
for(i in 1:ncolumns) {
plot(EMs4.1[,i],type="l",col = "Red", xlab="Time",
ylab="APEn", main=names(EMs4.1)[i],xaxt="n")
year_mids<-seq(182,5265,by=229)
axis(1,at=year_mids,labels=1995:2017)
}
# finish plotting
dev.off()

Sir, According to your suggestion, *"** you can do a better job of placing
the year labels by changing the sequence for each of the CSV (not Excel)
files. The best method of all would be to have a date for each observation.
You could then discard all these approximations I have made to get the
plots to work.**" , *when I am adding the date (i.e. date-month-year) in
the sequence *(**year_mids<-seq(182,5655,by=229)*
*
axis(1,at=year_mids,labels=03-01-1994:03-08-2017)*
*
})*
*I am getting the error.*

Kindly suggest.

Thank you very much.

[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&>
12/17/18,
12:25:26 PM

On Sun, Dec 16, 2018 at 2:58 PM Jim Lemon <drjimlemon using gmail.com> wrote:

> Hi Subhamitra,
> As I said, the code I sent is an approximation to get your year labels in
> about the correct places. You are welcome to improve the calculations.
>
> 182 days is about half a year, so that the first "tick" will fall around
> the end of June (i.e. the middle of the year). If you specify the increment
> as 226, you get one too many labels. 229 is what is known as a kludge (a
> clumsy solution that works)
>
> Yes, I mistakenly thought that the observations were the same throughout
> the four files. As you know this (and I didn't) you can do a better job of
> placing the year labels by changing the sequence for each of the CSV (not
> Excel) files. The best method of all would be to have a date for each
> observation. You could then discard all these approximations I have made to
> get the plots to work.
>
> No, the arguments of the axis function are:
>
> axis(<side of plot>, <position of ticks>, <labels for the ticks>)
>
> The first argument is; 1=bottom, 2=left, 3=top, 4=right. The next two
> arguments must be the same length. If not, you will get an error. As you
> can see, only every other tick has a label to avoid crowding. There are
> ways to get more tick labels on an axis.
>
> Jim
>
>
> On Sun, Dec 16, 2018 at 7:03 PM Subhamitra Patra <
> subhamitra.patra using gmail.com> wrote:
>
>> Hello Sir,
>>
>> I have three queries regarding your suggested code.
>>
>> *1. *In my last email, I mentioned why there are missing observations in
>> my data series. In the line, *year_mids<-seq(182,5655,by=229), *
>>
>> *A. what 182 indicates and what is the logic behind the consideration of
>> 229 increments, although there are 226 observations per year?*
>> *B.  Each excel file is having different observations depending on the
>> variation of starting dates. So, is it required to add  **year_mids in
>> the loop? I think I need to justify **year_mids object each time after
>> importing the individual excel files. If I am wrong, kindly correct me.*
>>
>> 2. Further, in the command* axis(1,at=year_mids,labels=1994:2017), 1
>> indicates the no. of increments of year name, right?*
>>
>> Kindly clarify my queries Sir for which I shall be always grateful to you.
>>
>> Thank you very much.
>>
>> [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&> 12/16/18,
>> 1:29:05 PM
>>
>> On Sun, Dec 16, 2018 at 12:24 PM Subhamitra Patra <
>> subhamitra.patra using gmail.com> wrote:
>>
>>> Thank you very much sir. Actually, I excluded all the non-trading days.
>>> Therefore, Each year will have 226 observations and total 6154 observations
>>> for each column. The data which I plotted is not rough data. I obtained the
>>> rolling observations of window 500 from my original data. So, the no. of
>>> observations for each resulted column is (6154-500)+1=5655. So, It is
>>> not accurate as per the days of calculations of each year.
>>>
>>> Ok, Sir, I will go through your suggestion, obtain the results for each
>>> column of my data and would like to discuss the results with you. After
>>> solving of this problem, I would like to discuss another 2 queries.
>>>
>>> Thank you very much Sir for educating a new R learner.
>>>
>>> [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&> 12/16/18,
>>> 12:20:17 PM
>>>
>>> On Sun, Dec 16, 2018 at 8:10 AM Jim Lemon <drjimlemon using gmail.com> wrote:
>>>
>>>> Hi Subhamitra,
>>>> Thanks. Now I can provide some assistance instead of just complaining.
>>>> Your first problem is the temporal extent of the data. There are 8613 days
>>>> and 6512 weekdays between the two dates you list, but only 5655
>>>> observations in your data. Therefore it is unlikely that you have a
>>>> complete data series, or perhaps you have the wrong dates. For the moment
>>>> I'll assume that there are missing observations. What I am going to do is
>>>> to match the 24 years (1994-2017) to their approximate positions in the
>>>> time series. This will give you the x-axis labels that you want, close
>>>> enough for this illustration. I doubt that you will need anything more
>>>> accurate. You have a span of 24.58 years, which means that if your missing
>>>> observations are uniformly distributed, you will have almost exactly 226
>>>> observations per year. When i tried this, I got too many intervals, so I
>>>> increased the increment to 229 and that worked. To get the positions for
>>>> the middle of each year in the indices of the data:
>>>>
>>>> year_mids<-seq(182,5655,by=229)
>>>>
>>>> Now I suppress the x-axis by adding xaxt="n" to each call to plot. Then
>>>> I add a command to display the years at the positions I have calculated:
>>>>
>>>> axis(1,at=year_mids,labels=1994:2017)
>>>>
>>>> Also note that I have added braces to the "for" loop. Putting it all
>>>> together:
>>>>
>>>> year_mids<-seq(182,5655,by=229)
>>>> pdf("EMs.pdf",width=20,height=20)
>>>> par(mfrow=c(5,4))
>>>> # import your first sheet here (16 columns)
>>>> ncolumns<-ncol(EMs1.1)
>>>> for(i in 1:ncolumns) {
>>>>   plot(EMs1.1[,i],type="l",col = "Red", xlab="Time",
>>>>        ylab="APEn", main=names(EMs1.1)[i],xaxt="n")
>>>>  axis(1,at=year_mids,labels=1994:2017)
>>>> }
>>>> #import your second sheet here, (1 column)
>>>> ncolumns<-ncol(EMs2.1)
>>>> for(i in 1:ncolumns) {
>>>>   plot(EMs2.1[,i],type="l",col = "Red", xlab="Time",
>>>>        ylab="APEn", main=names(EMs2.1)[i],xaxt="n")
>>>>  axis(1,at=year_mids,labels=1994:2017)
>>>> }
>>>> # import your Third sheet here, (1 column)
>>>> ncolumns<-ncol(EMs3.1)
>>>> for(i in 1:ncolumns) {
>>>>   plot(EMs3.1[,i],type="l",col = "Red", xlab="Time",
>>>>        ylab="APEn", main=names(EMs3.1)[i],xaxt="n")
>>>>  axis(1,at=year_mids,labels=1994:2017)
>>>> }
>>>> # import your fourth sheet here, (1 column)
>>>> ncolumns<-ncol(EMs4.1)
>>>> for(i in 1:ncolumns) {
>>>>   plot(EMs4.1[,i],type="l",col = "Red", xlab="Time",
>>>>        ylab="APEn", main=names(EMs4.1)[i],xaxt="n")
>>>>  axis(1,at=year_mids,labels=1994:2017)
>>>> }
>>>> # finish plotting
>>>> dev.off()
>>>>
>>>> With any luck, you are now okay. Remember, this is a hack to deal with
>>>> data that are not what you think they are.
>>>>
>>>> Jim
>>>>
>>>>
>>>
>>> --
>>> *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*

-------------- next part --------------
A non-text attachment was scrubbed...
Name: EMs.pdf
Type: application/pdf
Size: 545317 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20181217/96de6a51/attachment.pdf>
```