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

在Makie.jl中如何为密度图的中间50%区间着色?

给CairoMakie密度图的中间50%区域着色

要给密度图的中间50%区域(即四分位距IQR,Q1到Q3区间)着色,你需要先计算数据的四分位数,再提取密度曲线的坐标数据,最后用填充工具绘制指定区间的色块。以下是完整实现代码:

using CairoMakie, Statistics

# 生成随机正态分布数据
data = randn(200)
# 计算四分位数Q1和Q3
q1, q3 = quantile(data, [0.25, 0.75])

# 创建绘图对象
f = Figure()
ax = Axis(f[1, 1], title = "密度图(中间50%区域着色)")

# 绘制密度曲线并获取其坐标数据
dens_plot = density!(data, color = :darkblue, linewidth = 2)
x_dens = dens_plot[1][]
y_dens = dens_plot[2][]

# 筛选出Q1到Q3之间的坐标点
mask = (x_dens .>= q1) .& (x_dens .<= q3)
x_masked = x_dens[mask]
y_masked = y_dens[mask]

# 用band!填充中间区域,设置半透明蓝色
band!(ax, x_masked, zeros(length(x_masked)), y_masked, color = (:lightblue, 0.5))

# 把密度曲线放在最上层,避免被填充色块遮挡
translate!(dens_plot, 0, 0, 1)

f

关键步骤说明:

  • 计算四分位数:用Statistics包的quantile函数直接获取数据的25%和75%分位数,对应中间50%的区间。
  • 提取密度曲线数据:调用density!后返回的对象包含曲线的x、y坐标,通过[]可以取出这些数组。
  • 填充区域:使用band!函数绘制从x轴(y=0)到密度曲线的填充区域,通过color参数设置颜色和透明度。
  • 层级调整:用translate!把密度曲线的z轴位置设为1,确保它显示在填充色块上方。

你可以根据需求调整填充色的color参数,比如换成(:cornflowerblue, 0.6)来改变颜色和透明度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:15:38