[R] how to draw paired mosaic plot?

Jim Lemon drjimlemon at gmail.com
Sun Feb 8 04:17:37 CET 2015


Hi meng,
A basic display of mosaic plots for all pairs of variables isn't too
difficult, but you will probably want to make this a bit fancier. It
only displays the unique plots, unlike the "pairs" plot. Keep in mind
that "many" variables will mean many plots.

chardf<-data.frame(v1=sample(LETTERS[1:3],20,TRUE),
 v2=sample(LETTERS[4:6],20,TRUE),
 v3=sample(LETTERS[7:9],20,TRUE),
 v4=sample(LETTERS[10:12],20,TRUE))

mosaic_pairs<-function(x,...) {
 if(!is.data.frame(x) && !is.matrix(x))
  stop("x must be a 2D matrix or data frame")
 nvar<-dim(x)[2]
 paircomb<-combn(nvar,2)
 nplots<-dim(paircomb)[2]
 split.screen(figs=c(nvar-1,nvar-1))
 for(i in 1:nplots) {
  screen((paircomb[2,i]-1)+(paircomb[1,i]-1)*(nvar-1))
  maintitle<-
   paste(names(x)[paircomb[1,i]],"by",names(x)[paircomb[2,i]])
  par(mar=c(1,1,3,1))
  mosaicplot(table(x[[paircomb[2,i]]],x[[paircomb[1,i]]]),
   main=maintitle,...)
 }
}

mosaic_pairs(chardf)

Jim


On Sun, Feb 8, 2015 at 1:50 AM, meng <laomeng_3 at 163.com> wrote:
> If there are many character variables,and I want to get the mosaic plot of
> every pair of each variable,how to do then?
>
> If the variables are numeric, I can use pairs to get paired scatter plot.
> But as to the character variables, how to get the "paired mosaic plot"?
>
> Many thanks.
>
>
>
>
> --
> QQ: 1733768559
>
>
>
> At 2015-02-07 17:04:26,"Jim Lemon" <drjimlemon at gmail.com> wrote:
>>Hi meng,
>>It's not too hard to get a mosaic plot of two character variables:
>>
>>x<-sample(LETTERS[1:3],20,TRUE)
>>y<-sample(LETTERS[24:26],20,TRUE)
>>mosaicplot(table(x,y))
>>
>>If you could tell us how the above is not what you want, perhaps a
>>better suggestion will appear.
>>
>>Jim
>>
>>
>>On Sat, Feb 7, 2015 at 6:29 PM, meng <laomeng_3 at 163.com> wrote:
>>> If both x and y are all character, paired scatter plot is a little bit
>>> strange I think.
>>>
>>>
>>>
>>>
>>>
>>>
>>> --
>>> QQ: 1733768559
>>>
>>>
>>>
>>>
>>>
>>> At 2015-02-06 23:52:34,"Duncan Murdoch" <murdoch.duncan at gmail.com> wrote:
>>>>On 06/02/2015 6:46 AM, meng wrote:
>>>>> Hi all:
>>>>> If there are two numeric variable:x,y, and I can get paired scatter
>>>>> plot by function "pairs".But if x and y are character, and I want to get
>>>>> paired mosaic plot,which function should be used then?
>>>>
>>>>Why not pairs, with a custom panel function?  There are examples on the
>>>>help page, though I don't think a mosaic plot is there.
>>>>
>>>>Duncan Murdoch
>>>>>
>>>>>
>>>>> Many thanks!
>>>>> My best.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> QQ: 1733768559
>>>>>
>>>>>
>>>>>      [[alternative HTML version deleted]]
>>>>>
>>>>> ______________________________________________
>>>>> R-help at 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.
>>>>
>>>
>>>         [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-help at 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.
>
>
>



More information about the R-help mailing list