【问题标题】:Violin plots don't show expected density curves as expected when unique points are less than four当唯一点少于四个时,小提琴图未按预期显示预期的密度曲线
【发布时间】:2019-05-21 02:05:56
【问题描述】:

背景

我正在用ggplot2 玩箱形图和小提琴图,但我发现一些奇怪的现象只有在唯一数据的数量少于四个时才会发生。我不太确定 SO 是否适合这个帖子,如果不是,请引导我到正确的地方。

单个数据点:绘图未呈现

df <- data.frame(state = "bedtime", value = 100)

箱线图

ggplot(aes(x = state, y = value), data = df) + geom_boxplot() + geom_point()

小提琴情节

ggplot(aes(x = state, y = value), data = df) + geom_violin()

什么都没有。收到一条警告消息。

两到三个数据点:有时会渲染绘图

如果不是,则类似于单个数据点的情况。如果渲染,分位数线不一致。

df <- data.frame(state = rep("after_meal", 4), value = rep(c(178, 162), each = 2))

箱线图

ggplot(aes(x = state, y = value), data = df) + geom_boxplot() + geom_point()

小提琴情节

ggplot(aes(x = state, y = value), data = df) + geom_violin(draw_quantiles = c(0.25, 0.5, 0.75))

如您所见,分位数线彼此不一致。

问题

  1. 为什么只有一个数据点时不显示小提琴图?我查了kernel density estimation,我想应该有一把很宽但很平的小提琴。 geom_violin 中是否还有其他限制或约束?还是小提琴情节的规律?
  2. 在第二种情况下,为什么 25% 和 75% 分位数放在箱线图和小提琴图之间的不同位置?

【问题讨论】:

    标签: r ggplot2 boxplot violin-plot


    【解决方案1】:

    小提琴图是沿垂直轴反映的密度估计图,与箱线图的不同之处在于箱线图显示数据本身。

    至于你的第一个问题,密度是无限的,因为你在空间中的一个特定点请求它,宽度为零,即无限高(要看到这个,用geom_density替换geom_violin

    第二个问题源于同一件事:箱线图对于少量点更准确,因为密度估计是连续的,并且对于非常短的范围没有明确定义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多