3
$\begingroup$

Examples of data

Consider these data (coded in R)

yValue = function(a,b,c,d)
{
    r = runif(1,0.7,1)
    l = (a>3) * b/20 + c/4 * (d<10) + d/11 - a/4
    R = rep(0,length(a))
    R[r > l] = 2
    R[r < l] = 1
    R[b > 6] = 0
    return (R)  
}

set.seed(1)
a=1:5;b=1:8;c=1:4;d=1:12;e=1:7
d = expand.grid(a=1:5,b=1:8,c=1:4,d=1:12,e=1:7)
d$y = as.factor(yValue(d$a,d$b,d$c,d$d))

Goal

y is my response variable and it can take three different values.

I fail to think of a good way to visualize these data. I would like to visualize the space formed by the explanatory variables a,b,c,e,f and see which combinations is causing the the y variable to take one value or another.

The best I could find for the moment is something like

require(ggplot2)
ggplot(d,aes(x=a,y=b)) + geom_tile(aes(fill=y)) + facet_grid(d~c+e)

enter image description here

$\endgroup$
1
  • $\begingroup$ Are the variables a:e supposed to be continuous or categorical? Do you want to visualize these data to help yourself understand what's going on, or to present to others to make a point (& if so, what)? $\endgroup$ Nov 3 '16 at 17:26
2
$\begingroup$

For high dimensional data, nothing is going to be as great as 2-D data on a 2-D surface. However, a decent scalable approach is to use displays based parallel axes instead of perpendicular axes.

An array of histograms is one version of this.

enter image description here

The utility in seeing relationships comes from linked selection, so that if you, say, select the y=1 bin, you see the values of those rows in the other variables.

enter image description here

You can apply that idea to arrays of other graphs as well, but there is one special kind of graph designed for parallel axes called parallel coordinates, or parallel sets when applied to categorical data which I have done in this view of your data.

enter image description here

The areas are colored by the Y variable, so you can see a few Y-specific features, and you can sometimes see pairwise relationships between adjacent axes.

(I made these in JMP, but I believe there are a few options for parallel coordinates in R.)

$\endgroup$
0
$\begingroup$

I think this is on the right track. Using geom_tile or other methods to make a “heatmap” is an effective way to visualize this.

This has also been popularized as a “lasagna plot”. See this question for more help.

I think plots of this type are usually used with time as the x-axis, but I see no reason why you couldn’t use some other variable instead.

EDIT: I posted this before your edit to the panel plot. I'd have to consider more carefully if a panel of heatmaps is useful or not

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.