这个图在origin中是怎么画出来的?这个图学名叫什么?

作成日: 2025年9月5日

使用モデル GPT-5 Thinking by Chat01

質問

image.png

这个图在origin中是怎么画出来的?这个图学名叫什么?

思考

Thought for 50s

回答

这是一个把“核密度估计曲线(KDE, kernel density estimate)”叠加在同一坐标上,并在横轴处加了“地毯图(rug plot)”的分布可视化。
横轴用的是对数刻度(10^−6 到 10^−1),上方是各算法误差的核密度曲线,下方 0 附近的一排短竖线就是每个样本点的 rug。

在 Origin 里怎么做(给两种做法,按版本任选)

做法 A:直接用内置 KDE(OriginPro 2021/2022 及以后)

  1. 把每组误差值放在不同的 Y 列(X 留空,因为 X 就是“数值本身”)。
  2. 选中这些列 → Plot ▸ Statistics ▸ Kernel Density(不同版本可能叫 Kernel Density PlotDensity)。
    • Kernel 选 Gaussian(默认即可),带宽用 Scott/Silverman 或自定。
    • 选择 Overlay/同层叠加,勾选 Normalize to PDF(面积为 1)。
    • 若对话框带有 Rug 选项,勾上以显示轴上的小刻线。
  3. 双击 X 轴 → Scale 设为 Log10;把主刻度改成 1E–6、1E–5、1E–4、0.001、0.01、0.1。
  4. 线型与颜色:在 Plot DetailsGroup,为每条 KDE 线设置不同颜色/粗细。
  5. 需要把 rug 放到 0 线下方:在 Rug(或“Drop Lines”)里把基线设为 Y=0,并给一个负的 Offset(例如 –0.05)即可。

做法 B:无 KDE 按钮的版本(先算曲线再作图)

  1. Statistics ▸ Descriptive Statistics ▸ Frequency Counts(或 Data ▸ Kernel Density 工具):
    • 对每列计算 Kernel Density,输出一个新表,含 X(栅格点)与 f(X)(密度)。
  2. 对每组得到的 X–f(X) 两列作 Line 曲线,并 Overlay 到同一图层;把 X 轴设为 Log10
  3. 做 rug:复制原始数据列到新列,做一个常量 Y=0(或轻微负值如 –0.05),
    选中 X=原始数据、Y=常量Plot ▸ Scatter,在 Plot Details ▸ Drop LinesTo Base(或 Stem),把线长设短一些,颜色与对应 KDE 一致。
  4. Graph ▸ Add Straight Line 在 Y=0 处加参考线,调图例与字体。

学名:核密度估计曲线(KDE,概率密度曲线)+ 地毯图(rug plot)。
用途:在不依赖直方图分箱的情况下,平滑地比较多组误差分布;rug 可以展示每个样本的具体落点。

質問

image.png

在origin的分布图+轴须图中,分格数是什么意思?

回答

在 Origin 的“分布图+轴须图”里,分格数指的是把横轴区间(由“开始值”和“结束值”确定)划分成多少个等宽小区间(bin)。

详细解释

  • 开始值、结束值:决定分布统计的取值范围。
  • 分格数(Number of bins):就是直方图的柱子数量。
    • 如果分格数是 100,就会把区间(例如 1e-7 到 0.1)平均切成 100 份。
    • 每一份的宽度就是 “区间宽度 = (结束 – 开始) ÷ 分格数”。
  • 作用:分格数越多,分布显示得越细,但曲线会更抖动;分格数越少,分布更平滑,但可能丢掉细节。

和核密度曲线的关系

在 Origin 里,“分布图+轴须图”默认是基于直方图做的,再叠加平滑曲线(概率密度估计)。
分格数主要影响直方图(直方块的数量),同时也会影响到计算出的平滑曲线精细度。

👉 简单说:
“分格数 = 分布被切分的小桶数量”。
它直接决定了直方图的分辨率,也间接影响了概率密度曲线的形状。

要不要我帮你给你刚才的 KDE 曲线推荐一个合理的分格数设置范围(比如根据 Scott/Silverman 法则计算)?

質問

但是,更改分格数开始和结束的数值后,下面的轴须图中的横坐标为什么不跟着修改?

回答

这是 Origin 里 直方图 + 轴须图 的一个细节:

  • 分格数、开始、结束 这些参数控制的是直方图的统计区间和分箱数,用来决定直方图和密度曲线的形状。
  • 轴须图(rug plot) 却不是基于分格区间来的,它直接把原始数据的每一个样本点在横轴位置画一条小竖线。

所以:

  • 改变分格数/起止值 → 直方图和密度曲线会随之更新。
  • 轴须图 → 仍然忠实地反映原始数据点本身的位置,不会被分格数影响。

👉 换句话说:轴须图的横坐标就是原始误差值,而不是“落在哪个分格里”。因此它不会随着分格数、开始和结束的数值而变化。

如果你希望轴须图的横坐标范围和直方图保持一致,需要手动调整图层的 X 轴范围,或者在图表属性里同步设置横轴的 scale。

要不要我帮你写一个具体的 Origin 操作步骤,演示怎么让直方图的 X 范围和 rug 的范围保持一致?

質問

正常来说,轴须图中的范围应该和上面曲线图中的最大最小值一致吧?

回答

你理解得没错 ——正常情况下,轴须图(rug plot)的横坐标范围应该和上方曲线或直方图的横轴范围一致

但在 Origin 里,情况是这样的:

  • 曲线/直方图:横坐标范围由你在「分格数、开始、结束」里设定,或者由 Origin 自动根据数据范围来确定。
  • 轴须图:它默认是直接把“原始数据点”绘制在横轴上,不会参考你设置的分格区间。

因此会出现:

  • 直方图/曲线被限定在你指定的区间(例如 1E-7 到 0.1),
  • 但轴须图仍然画出所有原始数据点(即使在区间之外),
  • 这就导致 rug 的横坐标范围看起来和上面不一致。

解决方法

如果你希望 rug 和上方的曲线完全保持一致,有两种做法:

  1. 统一 X 轴范围

    • 双击 X 轴 → 在「Scale」里手动设定 min/max,使曲线和 rug 使用同一坐标范围。
    • 这样 rug 在区间外的数据不会显示。
  2. 预处理数据

    • 在数据表里先筛选/裁剪,只保留在 [开始值, 结束值] 区间内的数据点,再去画直方图+rug。
    • 这样 rug 图就自然和直方图的范围一致。

👉 换句话说:Origin 默认 rug 是“忠实显示所有原始点”,而不是“和分格数设定联动”。如果想让它严格对齐,需要你手动控制范围。

要不要我帮你写一份操作步骤(Origin 里具体点哪里),让 rug 自动跟随直方图范围?

質問

为什么分格数会影响相对频率的幅值?

回答

这是个很好的问题,其实和“相对频率”的定义方式直接相关。

Origin 的分布图/直方图 中:

  • 相对频率(Relative Frequency) 定义为:

    fi=niNf_i = \frac{n_i}{N}

    其中 nin_i 是第 i 个分格里的数据点数,NN 是总样本数。

  • 但是如果你在图中选择 显示密度(Density/概率密度) 而不是单纯的相对频率,Origin 会进一步把高度除以 分格宽度(bin width)

    fi=niNΔxf_i = \frac{n_i}{N \cdot \Delta x}

    这样可以保证所有柱子的面积之和为 1(和概率密度函数一致),而不是柱子高度之和为 1。


为什么分格数会影响幅值?

  • 当分格数增加时,每个分格宽度 Δx\Delta x 变小,导致同样的数据量分布到更多、更窄的区间里。
  • 因为绘制的是“密度”,要除以更小的 Δx\Delta x,所以柱子的高度(相对频率曲线的幅值)会变大。
  • 相反,分格数减少时,每个分格更宽,除以较大的 Δx\Delta x,柱子高度就变矮。

这就是为什么同一组数据,在不同分格数下,曲线峰值会变化,但曲线下面积保持为 1(归一化概率密度)。


✅ 总结:
分格数会改变相对频率曲线的“幅值”,是因为 Origin 在计算时做了密度归一化,柱子高度和分格宽度成反比。
如果只想让幅值和分格数无关,可以选择“频数”或“相对频数”模式,而不是“密度”模式。

要不要我帮你对比一下 “相对频率”和“密度”两种模式下的效果差别(在 Origin 的设置里具体怎么切换)?

質問

分格数越大,幅值越小吗

回答

不一定,这取决于你在 Origin 里选择的 纵轴归一化方式

1. 如果纵轴模式是 频数(Counts)/相对频数(Relative Frequency)

  • 分格数越大 → 每个分格更窄 → 平均下来每个 bin 里的数据点更少。
  • 因此柱子的高度(幅值)会 变小

2. 如果纵轴模式是 密度(Density/Probability Density)

  • 公式是 fi=niNΔxf_i = \frac{n_i}{N \cdot \Delta x} 其中 Δx\Delta x 是分格宽度。
  • 分格数越大 → Δx\Delta x 越小 → 分母变小,所以柱子的高度(幅值)会 变大
  • 但无论分格数怎么变,整个曲线下的面积始终保持为 1。

✅ 总结:

  • 相对频率模式 → 分格数大 → 幅值小。
  • 密度模式 → 分格数大 → 幅值大。

你现在看到的那种“曲线峰值会随着分格数调整而变化,但面积保持一致”,说明你选的是 密度归一化模式

要不要我帮你在 Origin 的界面里指出 哪里可以切换这几种纵轴模式,方便你验证?

質問

那这个取值多少合适?

回答

这个问题其实没有“唯一正确”的数值,而是要结合你的数据量、分布特性和展示目的来选。给你几个常见的参考方法:


1. 常用经验法则

  • Sturges 法则

    k=1+log2(N)k = 1 + \log_2(N)

    其中 NN 是样本量。适合样本量不大(几百以内)。

  • Scott 法则
    分格宽度

    h=3.5σN1/3h = 3.5 \cdot \sigma \cdot N^{-1/3}

    σ\sigma 是标准差。再用区间长度 ÷ h 得到分格数。适合连续分布数据。

  • Freedman–Diaconis 法则

    h=2IQRN1/3h = 2 \cdot IQR \cdot N^{-1/3}

    其中 IQRIQR 是四分位距。对偏态或长尾分布更稳健。


2. 实际操作建议

  • 如果你只是想“看清整体趋势”,分格数不必太多(20–50 就够)。
  • 如果你要和概率密度函数比较,或者做出版级图,建议用 ScottFreedman–Diaconis 算出的分格数。
  • 数据量特别大(比如上万点),可以适当调高分格数(100–200),让曲线更光滑,但注意别太多导致曲线抖动。

3. Origin 里的做法

直方图/分布图设置对话框里:

  • 你可以手动输入分格数,或者切换到“Width = Auto”,Origin 内部就会用类似 Scott 的规则。
  • 如果想控制更科学,可以先在 Excel / Python 里算出合适的 bin width,再输入到 Origin。

✅ 总结:

  • 小样本(几百点):20–30 个分格数。
  • 中等样本(几千点):50–100 个分格数。
  • 大样本(上万点):100–200 个分格数。
  • 想严谨 → 用 Scott 或 Freedman–Diaconis。

要不要我帮你写个 小脚本(Excel 或 Python 公式),直接输入数据量和方差/IQR,就能自动算出推荐的分格数?

質問

分格数、开始和结束的取值会影响曲线的什么?

回答

在 Origin 里,分格数、开始值和结束值主要影响的是直方图和概率密度曲线的表现,具体来说:


1. 开始值与结束值

  • 决定了直方图/曲线统计的区间范围。
  • 如果区间比数据范围小,超出的数据点不会参与统计,也不会在曲线中体现。
  • 如果区间比数据范围大,会增加“空格”,曲线在边缘部分会比较平(没有数据支撑)。
    👉 它们直接决定了横坐标的可见范围和曲线的覆盖范围。

2. 分格数

  • 控制了区间被划分为多少个小段(bin)。
  • 直方图模式
    • 分格数多 → 每个 bin 更窄 → 直方图更细致,但更容易抖动。
    • 分格数少 → bin 更宽 → 曲线更平滑,但可能掩盖细节。
  • 密度模式(即归一化成概率密度函数):
    • 分格数变多,bin 宽度变小,高度会变大(为了保证曲线下面积=1)。
    • 分格数变少,bin 宽度变大,高度会变小。
      👉 分格数主要影响的是曲线的平滑程度和峰值高度,而不是整体面积(面积保持为 1)。

3. 对曲线形状的综合影响

  • 开始/结束 决定曲线在哪个范围内出现。
  • 分格数 决定曲线是粗糙还是细腻,峰值高低随之变化。
  • 如果想要避免过度依赖主观选择,可以使用 Origin 提供的 Auto/规则(Scott, Freedman–Diaconis 等) 来确定合适的分格数。

一句话总结

  • 开始、结束 → 控制曲线的横向范围。
  • 分格数 → 控制曲线的“横向分辨率”和“纵向幅值”。
  • 曲线的总体面积不会受影响(在密度模式下始终为 1)。

要不要我给你举一个具体的 数值例子(比如相同数据在 20 格 vs 100 格下曲线峰值和形状的对比),这样会更直观?

質問

image.png

这种图在origin中是怎么画出来的?

回答

这个图在 Origin 里其实是 多图层复合图,结合了几种元素:


🔹 主图部分

  1. 折线图

    • 多列数据(测量值、真值、UKF估计值、SGE-UKF估计值、RLW-UKF估计值)分别画成折线。
    • 操作:选中这些列 → Plot ▸ Line ▸ Multiple Lines,或者建一个 Layer,把不同列叠加。
  2. 柱状误差图(误差随时间变化)

    • 在下方你看到的一根根竖条,是不同算法的误差值。
    • 做法:选中误差列 → Plot ▸ Column/Bar ▸ Column,再放到**右 Y 轴(第二纵轴)**上。

🔹 双纵轴设置

  • 左轴:压气机出口压力 / MPa(曲线使用)。
  • 右轴:误差值 / MPa(柱状使用)。
  • 操作:双击图表 → 在 Layer Properties ▸ Axes 里,勾选右 Y 轴,分配不同数据到对应坐标轴。

🔹 局部放大(插图/Inset Zoom)

  • 右上角的小窗口就是 Inset Zoom Graph
  • 操作:
    1. 在图表上框选区域(比如 60–150s 的区间)。
    2. Graph ▸ New Layer(Axis) ▸ Inset with Data
    3. 调整 inset 的位置和大小。

🔹 区域高亮

  • 图中左边红框加灰色背景,表示选中放大区域。
  • 做法:
    • 选区 → Draw ▸ Rectangle,填充颜色改成半透明灰,边框改成红色。
    • 或者用 ROI Tool 添加矩形框。

🔹 图例与样式

  • 多条曲线和柱子的图例可以在 Graph ▸ Legend ▸ Update Legend 里编辑,或手动修改为“测量值、真值、UKF估计值”等。
  • 线型/颜色:双击曲线 → 在 Plot Details 里设置。

学名:这是一个 双纵轴时序曲线图 + 柱状误差图 + 插图放大图,常用于动态系统信号和滤波算法对比。


要不要我帮你整理一份 Origin 分步操作清单(一步一步菜单点哪里),这样你可以完全复现这个图?

このQ&Aを共有