[R] plot factors with dots in R

Luigi Marongiu m@rong|u@|u|g| @end|ng |rom gm@||@com
Mon Aug 31 14:01:14 CEST 2020


Thank you, all solutions work!

On Fri, Aug 28, 2020 at 9:02 AM Deepayan Sarkar
<deepayan.sarkar using gmail.com> wrote:
>
> On Thu, Aug 27, 2020 at 5:46 PM Luigi Marongiu <marongiu.luigi using gmail.com> wrote:
> >
> > Hello,
> > I have a dataframe as follows:
> > ```
> > x = c("0 pmol", "10 pmol", "100 pmol", "1000 pmol")
> > y = c(0.9306, 1.8906, 2.2396, 2.7917)
> > df = data.frame(x, y)
> >
> > > str(df)
> > 'data.frame': 4 obs. of  2 variables:
> >  $ x: chr  "0 pmol" "10 pmol" "100 pmol" "1000 pmol"
> >  $ y: num  0.931 1.891 2.24 2.792
> > ```
> > I would like to visualize the data with the classic dots (pch=16) but:
>
> Perhaps this is a good starting point:
>
> with(df, dotchart(y, labels = x, pch = 16))
>
> -Deepayan
>
> > ```
> > > plot(df$y ~ df$x)
> > Error in plot.window(...) : need finite 'xlim' values
> > In addition: Warning messages:
> > 1: In xy.coords(x, y, xlabel, ylabel, log) : NAs introduced by coercion
> > 2: In min(x) : no non-missing arguments to min; returning Inf
> > 3: In max(x) : no non-missing arguments to max; returning -Inf
> > ```
> > which is right because x is not numeric, so I took the factor:
> > ```
> > plot(df$y ~ factor(df$x)) # gives bars instead of dots
> > plot(df$y ~ factor(df$x), pch = 16) # this also
> > ```
> > I tried to convert directly the dataframe:
> > ```
> > df$x = lapply(df$x, factor)
> > > str(df)
> > 'data.frame': 4 obs. of  2 variables:
> >  $ x:List of 4
> >   ..$ : Factor w/ 1 level "0 pmol": 1
> >   ..$ : Factor w/ 1 level "10 pmol": 1
> >   ..$ : Factor w/ 1 level "100 pmol": 1
> >   ..$ : Factor w/ 1 level "1000 pmol": 1
> >  $ y: num  0.931 1.891 2.24 2.792
> >
> > > plot(r$y ~ r$x, pch = 16)
> > Error in plot.window(...) : need finite 'xlim' values
> > In addition: Warning messages:
> > 1: In xy.coords(x, y, xlabel, ylabel, log) : NAs introduced by coercion
> > 2: In min(x) : no non-missing arguments to min; returning Inf
> > 3: In max(x) : no non-missing arguments to max; returning -Inf
> > ```
> > If I try to pass the number of levels:
> > ```
> > plot(df$y ~ factor(df$x, 1:4), pch = 16) # this draw a boxplot with
> > all data on level 1
> >
> > > df$x = lapply(df$x, factor(1:4))
> > Error in match.fun(FUN) :
> >   'factor(1:4)' is not a function, character or symbol
> > ```
> >
> > Since the transformation has given only one level (1), my questions are:
> > How do I tell R to use a dot instead of a line?
> > What is the correct way of setting factors?
> >
> >
> > --
> > Best regards,
> > Luigi
> >
> > ______________________________________________
> > 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,
Luigi



More information about the R-help mailing list