Multi-line graph?

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Multi-line graph?

barnhillec
Hi,

I am relatively new to R but not to graphing, which I used to do in Excel and a few other environments on the job. I'm going back to school for a PhD and am teaching myself R beforehand. So I hope this question is not unacceptably ignorant but I have perused every entry level document I can find and so far I'm out of luck.

I'm trying to graph some simple music psychology data. Columns are musical intervals, rows are the initials of the subjects. Numbers are in beats per minute (this is the value at which they hear the melodic interval split into two streams). So here's my table:

     Tenth Fifth Third
GG 112    152   168
EC  100    120   140
SQ  160   184    NA
SK   120   100   180

I want a multi-line graph where the intervals are on the X axis, and the y axis is the beats per minute, and each subject has a different line. In Excel this would be no problem but I am having trouble in R.

The only way I can figure out how to plot this in R is if the columns or rows are taken as variables. But the variable is beats per minute. Any suggestions?

I appreciate the help. -Eric
Reply | Threaded
Open this post in threaded view
|

Re: Multi-line graph?

Dieter Menne
barnhillec wrote
I'm trying to graph some simple music psychology data. Columns are musical intervals, rows are the initials of the subjects. Numbers are in beats per minute (this is the value at which they hear the melodic interval split into two streams). So here's my table:

     Tenth Fifth Third
GG 112    152   168
EC  100    120   140
SQ  160   184    NA
SK   120   100   180

I want a multi-line graph where the intervals are on the X axis, and the y axis is the beats per minute, and each subject has a different line.
The most difficult part of it (at least that's what my students think) is getting the data into the right format. If you have the changes to start with the data in the "long" format, use it. What you need is:

init interval beats
GC   Tenth    112

In this case, reformatting almost works with the default version of the melt function in package reshape.

It's good that you supplied a data example, but in general it is better if you could provide it in a copy-and-paste format as shown below. I needed more time to reformat the data than to write the rest.


Dieter


library(lattice)
library(reshape)
dt = data.frame(
           init  = c("GG","EC", "SQ","SK"),
           Tenth = c(112,100,160,120),
           Fifth = c(152,120,184,100),
           Third = c(168,140,NA,180))

# The data should look like this
#init interval beats
#GC   Tenth    112
#dtlong = melt(dt) # almost does it, but column "variable" is ugly
dtlong = melt(dt,variable_name="beats") # better
dtlong
           
xyplot(value~variable,groups=init,data=dtlong,type="l",
    auto.key=list(lines=TRUE))




Reply | Threaded
Open this post in threaded view
|

Re: Multi-line graph?

William Revelle
In reply to this post by barnhillec
?matplot

e.g.,

copy your data to the clipboard then

library(psych)
my.data <- read.clipboard()
>  my.data
    Tenth Fifth Third
GG   112   152   168
EC   100   120   140
SQ   160   184    NA
SK   120   100   180

matplot(t(my.data),type="b")

Bill



At 10:27 AM -0700 10/15/10, barnhillec wrote:

>Hi,
>
>I am relatively new to R but not to graphing, which I used to do in Excel
>and a few other environments on the job. I'm going back to school for a PhD
>and am teaching myself R beforehand. So I hope this question is not
>unacceptably ignorant but I have perused every entry level document I can
>find and so far I'm out of luck.
>
>I'm trying to graph some simple music psychology data. Columns are musical
>intervals, rows are the initials of the subjects. Numbers are in beats per
>minute (this is the value at which they hear the melodic interval split into
>two streams). So here's my table:
>
>  Tenth Fifth Third
>GG 112    152   168
>EC  100    120   140
>SQ  160   184    NA
>SK   120   100   180
>
>I want a multi-line graph where the intervals are on the X axis, and the y
>axis is the beats per minute, and each subject has a different line. In
>Excel this would be no problem but I am having trouble in R.
>
>The only way I can figure out how to plot this in R is if the columns or
>rows are taken as variables. But the variable is beats per minute. Any
>suggestions?
>
>I appreciate the help. -Eric
>--
>View this message in context:
>http://r.789695.n4.nabble.com/Multi-line-graph-tp2997402p2997402.html
>Sent from the R help mailing list archive at Nabble.com.
>
>______________________________________________
>[hidden email] mailing list
>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.

______________________________________________
[hidden email] mailing list
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.