ggplot returned a ggplot object with no layers as indicated by the error:
"Error: No layers in plot"
You need to add the layers to the object.
So in you example:
p1 <- ggplot(asd.df, aes(x=Time, y=Values, colour=Country))
then add the points (or something else)
p1 + geom_point()


Thomas (Tom) Keller, PhD email: kellert at ohsu.edu<http://ohsu.edu>, ph: 503.494.2442, office: RJH 5333
url: http://www.ohsu.edu/dnaseq/

On Mar 7, 2013, at 3:00 AM, <r-help-request@r-project.org<mailto:r-help-request@r-project.org>> wrote:

From: Jim Lemon <jim@bitwrit.com.au<mailto:jim@bitwrit.com.au>>
Subject: Re: [R] Plotting time data for various countries in same graph
Date: March 6, 2013 3:25:55 AM PST
To: Anindya Sankar Dey <anindya55@gmail.com<mailto:anindya55@gmail.com>>
Cc: "r-help@r-project.org<mailto:r-help@r-project.org>" <r-help@r-project.org<mailto:r-help@r-project.org>>


On 03/06/2013 07:06 PM, Anindya Sankar Dey wrote:
Hi,

I've the following kind of data

Time                      Country                 Values
2010Q1                    India                       5
2010Q2                    India                       7
2010Q3                    India                       5
2010Q4                    India                       9
2010Q1                    China                     10
2010Q2                    China                      6
2010Q3                    China                      9
2010Q4                     China                     14


I needed to plot a graph with the x-axis being time,y-axis being he Values
and 2 line graph , one for India and one for counry.

I don't have great knowledge on graphics in R.

I was trying to use, ggplot(data,aes(x=Time,y=Values,colour=Country))

But this does not help.

Can anyone help me with this?

Hi Anindya,
This might be a start for you:

asd.df<-read.table(
 text="Time                      Country                 Values
 2010Q1                    India                       5
 2010Q2                    India                       7
 2010Q3                    India                       5
 2010Q4                    India                       9
 2010Q1                    China                     10
 2010Q2                    China                      6
 2010Q3                    China                      9
 2010Q4                     China                     14
 ",header=TRUE)
# Time is read as a factor, so it can be used directly in plotting
as.numeric(asd.df$Time)
[1] 1 2 3 4 1 2 3 4
plot(as.numeric(asd.df$Time)[asd.df$Country == "India"],
 asd.df$Values[asd.df$Country == "India"],
 type="l",col=4,lwd=2,xaxt="n",xlab="Financial Quarter",
 ylab="Value",ylim=c(0,14))
lines(as.numeric(asd.df$Time)[asd.df$Country == "China"],
 asd.df$Values[asd.df$Country == "China"],
 col=2,lwd=2)
axis(1,at=1:4,labels=paste("Q",1:4,sep=""))
legend(2,2,c("India","China"),lty=1,lwd=2,col=c(4,2))

Jim



	[[alternative HTML version deleted]]

