You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ggMarginal中使用频率?如何为指定边际直方图添加计数?

关于ggMarginal的两个问题解答

嘿,这两个问题我刚好熟悉,给你详细拆解下:

1. 如何在ggMarginal中使用频率参数

ggMarginal本身没有直接提供freq参数,但它支持通过histArgs把设置传递给底层的geom_histogram函数。默认情况下,边际直方图是按密度来绘制的,如果你想切换成**频率(计数)**模式,只需要在histArgs里传入freq = TRUE就行。

给你修改后的代码示例:

ggMarginal(p1, margins = "x", size = 2, type = "histogram", col = "blue", fill = "orange",
           histArgs = list(freq = TRUE))

这样调整后,边际直方图的y轴就会显示每个区间的样本计数,而不是密度值了。

2. 给边际直方图添加计数标签

要在每个直方图柱子上方显示具体的计数数值,我们可以用ggMarginal的自定义绘图功能来实现。具体来说,就是定义一个带计数标签的直方图函数,然后通过type = "custom"传给ggMarginal。

这里给你一个完整的可运行示例:

library(ggplot2)
library(ggExtra)

# 先创建你的主图p1(这里用mtcars数据集做示例,你可以替换成自己的图)
p1 <- ggplot(mtcars, aes(wt, mpg)) + geom_point()

# 定义带计数标签的直方图函数
count_hist <- function(data, ...) {
  ggplot(data, aes(x = x)) +
    geom_histogram(col = "blue", fill = "orange", freq = TRUE, ...) +
    # 在柱子上方添加计数标签,vjust控制垂直位置避免和柱子重叠
    geom_text(stat = "count", aes(label = after_stat(count)), vjust = -0.5, size = 3)
}

# 生成带计数的边际直方图
ggMarginal(p1, margins = "x", size = 2, type = "custom", customFn = count_hist)

这个方法的核心是利用after_stat(count)获取每个柱子的计数,再通过geom_text把数值标注在柱子上方,你可以根据需要调整size和vjust参数来优化显示效果。

内容的提问来源于stack exchange,提问作者bmishra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:00:25