我可以根据逻辑条件为MASS :: parcoord()分配颜色吗?

时间:2019-03-27 02:32:51

标签: r

以下是生成平行坐标图的代码:

require(MASS)
shoes <- data.frame(shoes)
parcoord(shoes)

shoes数据集用于显示配对t检验的功效,这只是背景信息。鞋子中有两列,A和B,分别代表两种鞋底材料的磨损。正确分析后,材料之间存在巨大差异。

显示配对数据的一种好方法是使用平行坐标图,但是如您所见,没有颜色就几乎没有任何东西。我想添加两种颜色,例如A > B时为红色,A < B时为绿色。两种情况都会发生:

> shoes$A > shoes$B
 [1] FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE

我的问题是parcoord()在观察过程中会循环显示颜色,因此我不确定如何根据逻辑测试指定颜色。我尝试过

parcoord(shoes, col = ifelse(shoes$A > shoes$B, "red", "green"))

和各种不同的数字玩法(除了加26外还有很多)

my_colors <- colors()[as.numeric(shoes$A > shoes$B) + 26]
parcoord(shoes, col = my_colors)

,但似乎没有任何效果。我可以得到一种颜色的光谱,一种颜色,或者一种颜色,除了顶部和底部的条目之外。我希望FALSE生成一种颜色,TRUE生成另一种颜色。

1 个答案:

答案 0 :(得分:0)

我不确定我是否能直截了当,但是您的条件A > B仅在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

因此,您的平行坐标图将仅在“红色”中显示顶部和底部条目。换句话说:您的解决方案是正确的。