[R] Howto Superimpose Multiple Density Curves Into One Plot

ONKELINX, Thierry Thierry.ONKELINX at inbo.be
Wed Sep 2 15:01:26 CEST 2009


This code work without errors for me.

library(ggplot2)
dat <- read.table("http://dpaste.com/88561/plain/")
ggplot(dat, aes(x = V1, colour = factor(V2))) + geom_density()
ggplot(dat, aes(x = V1, fill = factor(V2))) + geom_density(alpha = 0.5)

Have a look at table(dat$V2). Some classes have only 1 or 2 values, which in not enough to estimate the density. Therefore you get an error with 

ggplot(dat, aes(x = V1)) + geom_density() + facet_wrap(~V2)

Subsetting the data solves the problem

ggplot(subset(dat, V2 <= 2), aes(x = V1)) + geom_density() + facet_wrap(~V2)

HTH,

Thierry


----------------------------------------------------------------------------
ir. Thierry Onkelinx
Instituut voor natuur- en bosonderzoek / Research Institute for Nature and Forest
Cel biometrie, methodologie en kwaliteitszorg / Section biometrics, methodology and quality assurance
Gaverstraat 4
9500 Geraardsbergen
Belgium
tel. + 32 54/436 185
Thierry.Onkelinx at inbo.be
www.inbo.be

To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of.
~ Sir Ronald Aylmer Fisher

The plural of anecdote is not data.
~ Roger Brinner

The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data.
~ John Tukey

-----Oorspronkelijk bericht-----
Van: Gundala Viswanath [mailto:gundalav at gmail.com] 
Verzonden: woensdag 2 september 2009 14:54
Aan: ONKELINX, Thierry
CC: r-help at stat.math.ethz.ch
Onderwerp: Re: [R] Howto Superimpose Multiple Density Curves Into One Plot

> str(dat)
'data.frame':	200 obs. of  2 variables:
 $ V1: num  0.98 0.19 1.09 0.21 0.26 0.98 0.31 0.88 0.23 0.2 ...
 $ V2: int  1 0 1 0 0 1 0 1 0 0 ...
> summary(dat)
       V1               V2
 Min.   :0.0000   Min.   :0.000
 1st Qu.:0.1600   1st Qu.:0.000
 Median :0.2950   Median :0.000
 Mean   :0.7108   Mean   :0.635
 3rd Qu.:1.0600   3rd Qu.:1.000
 Max.   :5.4400   Max.   :5.000


- G.V.

On Wed, Sep 2, 2009 at 9:50 PM, ONKELINX, Thierry<Thierry.ONKELINX at inbo.be> wrote:
> My orginal code should work with those colnames. Note that you must not use "variable.name" but just variable.name.
>
> I guess that somethings wrong with your dataframe. What does str(dat) and summary(dat) gives?
>
> Thierry
>
>
> ----------------------------------------------------------------------
> ------
> ir. Thierry Onkelinx
> Instituut voor natuur- en bosonderzoek / Research Institute for Nature 
> and Forest Cel biometrie, methodologie en kwaliteitszorg / Section 
> biometrics, methodology and quality assurance Gaverstraat 4 9500 
> Geraardsbergen Belgium tel. + 32 54/436 185 Thierry.Onkelinx at inbo.be 
> www.inbo.be
>
> To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of.
> ~ Sir Ronald Aylmer Fisher
>
> The plural of anecdote is not data.
> ~ Roger Brinner
>
> The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data.
> ~ John Tukey
>
> -----Oorspronkelijk bericht-----
> Van: Gundala Viswanath [mailto:gundalav at gmail.com]
> Verzonden: woensdag 2 september 2009 14:47
> Aan: ONKELINX, Thierry
> CC: r-help at stat.math.ethz.ch
> Onderwerp: Re: [R] Howto Superimpose Multiple Density Curves Into One 
> Plot
>
> Hi Thierry,
>
> I am sorry for coming back to you.
> Maybe I misunderstood you, but I got this:
>
>> colnames(dat)
> [1] "V1" "V2"
>> ggplot(dat, aes(x = "V1", colour = factor("V2"))) + geom_density()
> Error in data.frame(..., check.names = FALSE) :
>  arguments imply differing number of rows: 1, 200
>
>> ggplot(dat, aes(x = V1, colour = factor(V2))) + geom_density()
> Error in density.default(data$x, adjust = adjust, kernel = kernel, weight = data$weight,  :
>  need at least 2 points to select a bandwidth automatically
>
>
> - G.V
>
> On Wed, Sep 2, 2009 at 9:35 PM, ONKELINX, Thierry<Thierry.ONKELINX at inbo.be> wrote:
>> It looks like the data has other columnnames than the samplecode you provided.
>>
>> Use colnames(dat) to get the columnnames. Replace V1 with the columnname of the values and V2 with the column name of the ID's.
>>
>> HTH,
>>
>> Thierry
>>
>>
>> ---------------------------------------------------------------------
>> -
>> ------
>> ir. Thierry Onkelinx
>> Instituut voor natuur- en bosonderzoek / Research Institute for 
>> Nature and Forest Cel biometrie, methodologie en kwaliteitszorg / 
>> Section biometrics, methodology and quality assurance Gaverstraat 4 
>> 9500 Geraardsbergen Belgium tel. + 32 54/436 185 
>> Thierry.Onkelinx at inbo.be www.inbo.be
>>
>> To call in the statistician after the experiment is done may be no more than asking him to perform a post-mortem examination: he may be able to say what the experiment died of.
>> ~ Sir Ronald Aylmer Fisher
>>
>> The plural of anecdote is not data.
>> ~ Roger Brinner
>>
>> The combination of some data and an aching desire for an answer does not ensure that a reasonable answer can be extracted from a given body of data.
>> ~ John Tukey
>>
>> -----Oorspronkelijk bericht-----
>> Van: Gundala Viswanath [mailto:gundalav at gmail.com]
>> Verzonden: woensdag 2 september 2009 14:33
>> Aan: ONKELINX, Thierry
>> CC: r-help at stat.math.ethz.ch
>> Onderwerp: Re: [R] Howto Superimpose Multiple Density Curves Into One 
>> Plot
>>
>> Hi Thierry,
>>
>> Thanks for the reply. I tried this:
>>> dat <-   read.table("http://dpaste.com/88561/plain/")
>>
>> But I got such error:
>>
>>> ggplot(dat, aes(x = V1, colour = factor(V2))) + geom_density()
>> Error in density.default(data$x, adjust = adjust, kernel = kernel, weight = data$weight,  :
>>  need at least 2 points to select a bandwidth automatically
>>> ggplot(dat, aes(x = V1, fill = factor(V2))) + geom_density(alpha =
>>> 0.2)
>> Error in density.default(data$x, adjust = adjust, kernel = kernel, weight = data$weight,  :
>>  need at least 2 points to select a bandwidth automatically
>>> ggplot(dat, aes(x = V1)) + geom_density() + facet_wrap(~V2)
>> Error: could not find function "facet_wrap"
>>>
>>> ggplot(dat, aes(x = V1, fill = factor(V2))) + geom_density(alpha =
>>> 0.2)
>> Error in density.default(data$x, adjust = adjust, kernel = kernel, weight = data$weight,  :
>>  need at least 2 points to select a bandwidth automatically
>>> ggplot(dat, aes(x = V1)) + geom_density() + facet_wrap(~V2)
>> Error: could not find function "facet_wrap"
>>
>> Maybe I miss something? What could possibly go wrong?
>>
>> - Edward
>>
>>
>> On Wed, Sep 2, 2009 at 8:30 PM, ONKELINX, Thierry<Thierry.ONKELINX at inbo.be> wrote:
>>> Have a look at the ggplot2 package.
>>>
>>> library(ggplot2)
>>> dat <- read.table("mydat.txt")
>>> ggplot(dat, aes(x = V1, colour = factor(V2))) + geom_density() #or a 
>>> few alternatives ggplot(dat, aes(x = V1, fill = factor(V2))) + 
>>> geom_density(alpha = 0.2) ggplot(dat, aes(x = V1)) + geom_density() 
>>> +
>>> facet_wrap(~V2)
>>>
>>> HTH,
>>>
>>> Thierry
>>>
>>>
>>> --------------------------------------------------------------------
>>> -
>>> -
>>> --
>>> ----
>>> ir. Thierry Onkelinx
>>> Instituut voor natuur- en bosonderzoek / Research Institute for 
>>> Nature and Forest Cel biometrie, methodologie en kwaliteitszorg / 
>>> Section biometrics, methodology and quality assurance Gaverstraat 4 
>>> 9500 Geraardsbergen Belgium tel. + 32 54/436 185 
>>> Thierry.Onkelinx at inbo.be www.inbo.be
>>>
>>> To call in the statistician after the experiment is done may be no 
>>> more than asking him to perform a post-mortem examination: he may be 
>>> able to say what the experiment died of.
>>> ~ Sir Ronald Aylmer Fisher
>>>
>>> The plural of anecdote is not data.
>>> ~ Roger Brinner
>>>
>>> The combination of some data and an aching desire for an answer does 
>>> not ensure that a reasonable answer can be extracted from a given 
>>> body of data.
>>> ~ John Tukey
>>>
>>> -----Oorspronkelijk bericht-----
>>> Van: r-help-bounces at r-project.org
>>> [mailto:r-help-bounces at r-project.org]
>>> Namens Gundala Viswanath
>>> Verzonden: woensdag 2 september 2009 12:10
>>> Aan: r-help at stat.math.ethz.ch
>>> Onderwerp: [R] Howto Superimpose Multiple Density Curves Into One 
>>> Plot
>>>
>>> I have a data that looks like this:
>>> http://dpaste.com/88561/plain/
>>>
>>> And I intend to create multiple density curve into one plot, where 
>>> each curve correspond to the unique ID.
>>>
>>> I tried to use "sm" package, with this code, but without success.
>>>
>>> __BEGIN__
>>> library(sm)
>>> dat <- read.table("mydat.txt");
>>> plotfn <- ("~/Desktop/flowgram_superimposed.pdf");
>>> pdf(plotfn);
>>>
>>> sm.density.compare(dat$V1,dat$V2, xlab = "Flow Signal") colfill <- 
>>> c(2:10); legend(locator(1), levels(dat$V2), fill=colfill)
>>>
>>> dev.off();
>>> __END__
>>>
>>> Please advice what's the right way to do it or if  there is 
>>> alternative way to do it?
>>> I am trying to get this kind of figure:
>>> http://img524.imageshack.us/img524/2736/testl.png
>>>
>>>
>>> - G.V.
>>>
>>> ______________________________________________
>>> R-help at r-project.org 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.
>>>
>>> Druk dit bericht a.u.b. niet onnodig af.
>>> Please do not print this message unnecessarily.
>>>
>>> Dit bericht en eventuele bijlagen geven enkel de visie van de 
>>> schrijver weer en binden het INBO onder geen enkel beding, zolang 
>>> dit bericht niet bevestigd is door een geldig ondertekend document. 
>>> The views expressed in  this message and any annex are purely those 
>>> of the writer and may not be regarded as stating an official 
>>> position of INBO, as long as the message is not confirmed by a duly signed document.
>>>
>>
>> Druk dit bericht a.u.b. niet onnodig af.
>> Please do not print this message unnecessarily.
>>
>> Dit bericht en eventuele bijlagen geven enkel de visie van de 
>> schrijver weer en binden het INBO onder geen enkel beding, zolang dit 
>> bericht niet bevestigd is door een geldig ondertekend document. The 
>> views expressed in  this message and any annex are purely those of 
>> the writer and may not be regarded as stating an official position of 
>> INBO, as long as the message is not confirmed by a duly signed document.
>>
>
> Druk dit bericht a.u.b. niet onnodig af.
> Please do not print this message unnecessarily.
>
> Dit bericht en eventuele bijlagen geven enkel de visie van de 
> schrijver weer en binden het INBO onder geen enkel beding, zolang dit 
> bericht niet bevestigd is door een geldig ondertekend document. The 
> views expressed in  this message and any annex are purely those of the 
> writer and may not be regarded as stating an official position of 
> INBO, as long as the message is not confirmed by a duly signed document.
>

Druk dit bericht a.u.b. niet onnodig af.
Please do not print this message unnecessarily.

Dit bericht en eventuele bijlagen geven enkel de visie van de schrijver weer 
en binden het INBO onder geen enkel beding, zolang dit bericht niet bevestigd is
door een geldig ondertekend document. The views expressed in  this message 
and any annex are purely those of the writer and may not be regarded as stating 
an official position of INBO, as long as the message is not confirmed by a duly 
signed document.




More information about the R-help mailing list