Mathematica中用Epilog线展示特定范围均值与标准差的方法
Mathematica 特定范围统计量计算与可视化实现
1. 准备示例数据
先构造带噪声的正弦曲线数据集(替换为你的实际数据即可):
data = Table[{x, Sin[x] + RandomReal[{-0.2, 0.2}]}, {x, 0, 2 Pi, 0.1}];
2. 筛选目标范围并计算统计量
指定x轴的目标区间,筛选数据后计算y值的均值和标准差:
(* 设定目标x范围 *) xMin = 1; xMax = 3; (* 筛选区间内的数据点 *) filteredData = Select[data, xMin <= First[#] <= xMax &]; (* 计算统计量 *) meanY = Mean[Last /@ filteredData]; stdY = StandardDeviation[Last /@ filteredData];
3. 绘图并添加Epilog标注
用ListPlot绘制原始数据,通过Epilog添加范围标记线、均值线和文本标注:
ListPlot[data, PlotStyle -> PointSize[0.01], Frame -> True, FrameLabel -> {"x", "y"}, Epilog -> { (* 红色虚线标记x范围 *) Red, Dashed, Line[{{xMin, -1.5}, {xMin, 1.5}}], Line[{{xMax, -1.5}, {xMax, 1.5}}], (* 黑色粗线标记均值 *) Black, Thick, Line[{{xMin, meanY}, {xMax, meanY}}], (* 添加统计量文本标注 *) Text["均值: " <> ToString[Round[meanY, 0.02]], {2, meanY + 0.2}], Text["标准差: " <> ToString[Round[stdY, 0.02]], {2, meanY + 0.1}] }, PlotRange -> {{0, 2 Pi}, {-1.5, 1.5}} ]
适配说明
- 若使用连续函数而非离散数据,可通过
NIntegrate计算区间均值:meanY = NIntegrate[f[x], {x, xMin, xMax}]/(xMax - xMin),标准差需结合函数平方的积分计算。 - 可根据实际数据范围调整
PlotRange、文本标注的位置和线条样式。 - 如需展示标准差上下界,可在
Epilog中添加Line[{{xMin, meanY ± stdY}, {xMax, meanY ± stdY}}]。
内容的提问来源于stack exchange,提问作者A.Ali
相关产品推荐
相关产品推荐

