Here's the code to generate a parallel coordinate plot:
require(MASS)
shoes <- data.frame(shoes)
parcoord(shoes)
The shoes
data set is used to show the power of a paired t-test, which is just background info. There are two columns in shoes, A and B, which represent wear from two sole materials. Analyzed correctly, there is a tremendous difference between the materials.
A good way to show paired data is with the parallel coordinate plot, but as you can see it's pretty much nothing without some color. I'd like to add two colors, say, red when A > B
and green when A < B
. Both situations occur:
> shoes$A > shoes$B
[1] FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE
My problem is that parcoord()
cycles through colors as it goes through observations, so I'm not sure how to specify the color based on the logical test. I've tried
parcoord(shoes, col = ifelse(shoes$A > shoes$B, "red", "green"))
and various playing around with numbers (lots aside from just adding 26) in
my_colors <- colors()[as.numeric(shoes$A > shoes$B) + 26]
parcoord(shoes, col = my_colors)
but nothing seems to work. I either get a spectrum of colors, all one color, or all one color except for the top and bottom entries. I'd like the FALSE
to generate one color, TRUE
to generate another.
I'm not sure if I'm getting this straight, but your condition A > B
is only true for the maximum and minimum of shoes
.
shoes <- within(shoes, criterium <- ifelse(A > B, "bigger", "smaller"))
A B criterium
1 13.2 14.0 smaller
2 8.2 8.8 smaller
3 10.9 11.2 smaller
4 14.3 14.2 bigger
5 10.7 11.8 smaller
6 6.6 6.4 bigger
7 9.5 9.8 smaller
8 10.8 11.3 smaller
9 8.8 9.3 smaller
10 13.3 13.6 smaller
minmax <- c(min(min(shoes$A), min(shoes$B)), max(max(shoes$A), max(shoes$B)))
> minmax
[1] 6.4 14.3
So your parallel coordinates plot will show only the top and bottom entries in "red". In other words: Your solution is correct.