饼图与点图

机器算法验证 r 数据可视化 计算统计 饼形图
2022-03-24 22:41:19

我理解此处引用的对饼图的批评:饼图 问题

但是,上述响应(和 R 手册)总是引用克利夫兰的点图作为替代方案。我的问题是为什么点图被认为是一种替代方法?点图似乎只适用于:

  1. 数据集相对较小(因此您甚至可以通过眼睛计算图中的点,每个点对应一个数据点,并且

  2. 它们并非旨在显示数据的百分比/密度估计。

在我看来,饼图的主要目标是(即使它做得很糟糕)强调类别总和必须为 1 或 100% 的事实。使用点图可以显示每个类别的基值,但特定值在所有类别中的比例并不明显。此外,对于饼图,您有 10 个数据点还是 1,000,000 个数据点都没有关系,因为具有一百万个点的点图(即使类别数量很少)看起来很奇怪,并且可能只是折叠成条形图。

有人可以解释为什么点图被视为一种替代方案,并可能提供一些点图示例来替代饼图的其他定量替代方案(如条形图?)

2个回答

有两种不同类型的图表被称为“点图”,我认为您将两者混淆了。看起来您正在考虑的点图类型实际上是直方图的变体,并且不会传达与饼图相同类型的信息。

Cleveland 的点图类型本质上是一个条形图,在每个条形的末尾放置一个点,然后删除该条形图。因此,即使有数百万个数据点,它们也会像创建饼图一样被列出,然后为每个类别绘制一个点。在饼图和点图中,为绘图做准备的摘要是相同的:区别在于饼图中您试图比较未对齐的角度或区域(以及添加图表垃圾或以其他方式扭曲对值的感知的诱惑高得多)并且在点图中,您正在比较对齐比例上的点。

如果您希望查看者能够轻松判断整体的百分比,那么只需确保点位置的轴从 0 变为总数。您还可以轻松地添加另一个轴(或替换主轴)来显示百分比而不是计数,然后可以比在饼图中估计角度和面积更准确地从该轴读取百分比。

下面是几个使用 R 的例子:

这是我认为您正在考虑的点图类型,它不会取代饼图:

library(TeachingDemos)
dots(round( rnorm(100),0 ) )

在此处输入图像描述

但这是在克利夫兰被称为替代饼图的点图类型:

# steal data from ?pie
pie.sales <- c(0.12, 0.3, 0.26, 0.16, 0.04, 0.12)
names(pie.sales) <- c("Blueberry", "Cherry",
    "Apple", "Boston Cream", "Other", "Vanilla Cream")
par(mfrow=c(2,1))
dotchart(pie.sales*100)
# or
par(xaxs='i')
dotchart( pie.sales*100, xlim=c(0,100) )

在此处输入图像描述

Greg Snow 的回答涵盖了很多关于点图的内容。我只是想提出一个替代方案,您可以进一步压缩尺寸:

在此处输入图像描述

对不起,传说不见了,但这个想法几乎就在这里。与其将四条数据显示在四条水平线上,我们可以将它们放在一条线上,以累积百分比为刻度。这样,点之间的差异将允许像通常的点图一样进行定量比较。此外,它可以克服比较多个饼图的困难:如果我们需要显示来自另一个实体的数据,我们可以在插图中再添加一条水平线。

参考代码:

library(lattice)
perc <- c(100, 60, 30, 10)
setnum <- rep(1,4)
category <- c("A", "B", "C", "D")
dotplot(setnum ~ perc, group=category, xlim=c(-5,105),ylab="", xlab="Cumulative %", pch=16)