我有一个包含 14 个不同时间的小数据集来完成一项任务。但是,我很难找到合适的图表来绘制数据。如果样本较大,我会使用箱线图或直方图,但我不确定在样本如此小的情况下是否适合使用。
更新:时间是 5.2,3.9,5.6,4.2,3.8,4.1,6.0,5.6,4.4,4.5,4.9,4.5,4.9,4.2
我有一个包含 14 个不同时间的小数据集来完成一项任务。但是,我很难找到合适的图表来绘制数据。如果样本较大,我会使用箱线图或直方图,但我不确定在样本如此小的情况下是否适合使用。
更新:时间是 5.2,3.9,5.6,4.2,3.8,4.1,6.0,5.6,4.4,4.5,4.9,4.5,4.9,4.2
我认为这里的基本原则是你可以而且应该展示所有的个人价值观。即使细节不明显有趣或有用,也没有理由不展示它,或者强迫读者解码(比如说)一个直方图,其中条形可能只代表一个或两个值。
我在这里提供一个小型复合材料。左上角是一个点或带状图(至少有二十个其他名称被用于相同的想法),水平呈现,右上是垂直呈现的相同想法。相同值的实例通过堆叠匹配。
底部是 Parzen 意义上的分位数箱图,其中默认的水平尺度是累积概率(用常用术语绘制位置),并且可以绘制传统的中位数和四分位数箱,使得(原则上)一半值在盒子里面,就像一直宣传的那样,一半的值在外面。这里额外的水平线代表平均值。有些人在箱线图中添加手段作为额外的点或标记符号;我发现这可能与显示数据本身发生冲突,我更喜欢多一行。如果中值线和均值线似乎重合,您需要考虑该怎么做。几乎总是平均值和中位数明显不同。
可以说,在图表上明确测量单位是标准的,但我看不出它们是什么。
(我在这里特意提出了一个额外的观点,即图表可以非常小但仍然可以提供信息。在实践中,我不会让它们变得这么小。)
编辑:
在 Parzen 的意义上,广泛添加到分位数箱形图的交叉引用(下面第二个中的进一步参考;存在“分位数箱形图”的其他用途)
如何使用 Mann-Whitney U 检验得到哪个实验做得更好?
Shera, DM 1991。分位数图的一些用途,以增强数据表示。 计算科学与统计23:50-53。
Militký, J. 和 M. Meloun。1993. 用于单变量探索性数据分析的一些图形辅助工具。 分析化学学报277:215-221。
Meloun, M. 和 J. Militký。1994. 分析化学计量学中的计算机辅助数据处理。一、单变量数据的探索性分析。 化学论文48:151-157。
编辑2:
这些主题的主要目的不仅仅是回答直接问题,而是触及其他人可能感兴趣的非常相似的问题。
此处其他答案中的其他一些图形设计显示了标识符,在没有其他细节的情况下,不可知地标记为 1 ... 14。假设这些和其他标识符在解释中使用,显示它们的简单设计是(克利夫兰)点图。以下是几种可能性中的两种,其中标识符顺序按字面意思(左)和值排序(右)。如果需要,有足够的空间放置更长的标签。
与条形图相比,这种设计的一个优势是响应或结果轴可能从一个不为零的值开始,如果这似乎是一个更好的选择的话。
旋转图表以使响应轴垂直也很容易想象。
@Nick Cox 已经给出了一些很好的例子,另外两个我经常使用的选项是带有点重叠或轻微抖动的箱线图,
带 R 代码
times<-c(5.2,3.9,5.6,4.2,3.8,4.1,6.0,5.6,4.4,4.5,4.9,4.5,4.9,4.2)
boxplot(times)
points(rep(1,length(times)),times,cex = 3, pch = 'x')
boxplot(times)
points(jitter(rep(1,length(times)),amount = 0.1),times,cex = 3, pch = 'x')
编辑:如果你愿意,你也可以使用小提琴情节
ggplot(data.frame(times), aes(x = rep(0,length(times)), y = times)) + geom_violin() + geom_jitter()
你的问题让我想起了这篇博文中描述的技术。它关于离散事件的可视化。
核心技巧是绘制the time before an event
x the time after an event
。
这可能是偶然的,但顶部中间区域不包含数据。所以有一些可见的结构。
快速而肮脏的R
代码。
data <- c(5.2,3.9,5.6,4.2,3.8,4.1,6.0,5.6,4.4,4.5,4.9,4.5,4.9,4.2)
x=data[1:12]
y=data[2:13]
plot(x,y, col="white", xlab="Time before an event", ylab="Time after an event" )
for (i in 1:12) {
text(x[i],y[i], i)
}