用单个数据点可视化矩阵

时间:2017-10-16 13:40:21

标签: r visualization

我通常喜欢使用R中的箱形图来显示我的数据。 最近,我一直在使用高维李克特量表数据(0-3或0-7)进行大量工作,只有很少的观察结果(可能是200)。 所以我正在寻找一种有效获取数据视觉概览的方法,但是找到我常用的box-plotplot矩阵不足,因为我宁愿看到各个数据点。

我知道箱形图可以用例如ggplot2和jitter覆盖,但这也不是我想要的。 有没有人有一个关于如何可视化矩阵每个变量的各个数据点的简单解决方案?

所以给出

B = matrix( 
  c(2, 4, 3, 1, 5, 7, 4, 7, 3, 2, 2, 2, 0, 6, 2), 
  nrow=3, 
  ncol=5)
 boxplot.matrix(B)

我怎样才能将数据点与表示矩阵中所有变量的中位数和IQR的线一起绘制? 谢谢!

boxplots

enter image description here

1 个答案:

答案 0 :(得分:1)

就像我说的那样,你需要先重塑形状,因为这样你就可以将变量名称映射到x,将值映射到y

这是因为ggplot2的设计,你需要将一个美学映射到一个列,即你不能在x轴上放置几列。

library(ggplot2)
library(ggbeeswarm)

B_df <- as.data.frame(B)
B_long <- tidyr::gather(B_df)

ggplot(B_long, aes(key, value)) + geom_beeswarm()

enter image description here

当然,你没有足够的数据来使这看起来很好。

这是一个稍微好一点的例子,包括中线:

fr_long <- tidyr::gather(freeny)
ggplot(fr_long, aes(key, value)) + 
  geom_beeswarm() +
  stat_summary(aes(ymin = ..y.., max = ..y..), fun.y = 'mean', geom = 'crossbar', color = 'firebrick')

enter image description here