gpt4 book ai didi

gnuplot - 在 Gnuplot 中的箱线图中标记离群值

转载 作者:行者123 更新时间:2023-12-03 04:58:41 28 4
gpt4 key购买 nike

我已经学习 Gnuplot 大约一天了,我想使用箱线图来快速发现数据集中的异常值。

假设我正在进行一个实验:

  • 10 个科目
  • 我让 10 名受试者重复一项任务 100 次,以达到 3 个具体目标。
  • 我收集他们达到目标 1、目标 2、目标 3 的次数。

这些结果收集在如下所述的文件 data_File_new.dat 中:

    Name    Target1   Target2   Target3
subject1 10 30 50
subject2 11 31 51
subject3 9 29 49
subject4 12 32 52
subject5 8 28 48
subject6 13 33 53
subject7 7 27 47
subject8 50 34 54
subject9 6 50 46
subject10 15 35 20

现在我根据这些数据创建箱线图

   file = 'data_File_new.dat'
header = system('head -1 '.file);
N=words(header)
set title 'BoxPlot Subject Success'
set ylabel 'Number Of Success'
set xtics border in scale 0,0 nomirror norotate offset character 0, 0, 0 autojustify
set xtics norangelimit
set xtics rotate -45
set xtics ('' 2)
set for [i=2:N] xtics add (word(header, i) i)
set style data boxplot
plot for [i=2:N] file using (i):i

所以结果是一个箱线图,其中异常值被绘制为实心点(我想发布图片,但我需要 10 声望才能发布图像)。它告诉我是否存在异常值。但是我想了解更多我想知道谁是异常值,即:

  • 主题 8 是目标 1 的异常值
  • 主题 9 是目标 2 的异常值
  • 受试者 10 是目标 3 的异常值

由于 Gnuplot 知道这些点是异常值,我希望 Gnuplot 将它们存储在某种列表中。我想告诉 Gnuplot '绘制异常值并用与它们所属的行相对应的第一列 (subjectx) 的单词来标记它们'

然后,当我打开箱线图时,我一眼就能识别出不仅存在异常值,而且还知道它们是谁

有人知道该怎么做吗?我在论坛上看到有人在 R 中这样做,但在 Gnuplot 中却没有。

最佳答案

这不是 gnuplot 代码中最漂亮的部分,但它可以完成!

Gnuplot stats 可用于获取上四分位数和下四分位数,用于生成箱线图。然后,您可以使用一些条件代码来绘制位于带有标签的范围之外的点。棘手的部分是,plot 命令在最后进行eval 之前被构建为字符串。就像我说的,不太漂亮!

file = 'data_File_new.dat'
header = system('head -1 '.file)
N=words(header)
set title 'BoxPlot Subject Success'
set ylabel 'Number Of Success'
set xtics border in scale 0,0 nomirror norotate offset character 0, 0, 0 autojustify
set xtics norangelimit
set xtics rotate -45
set xtics ('' 2)
set for [i=2:N] xtics add (word(header, i) i)
r = 1.5
set style boxplot range r
unset key
cmd = "plot for [i=2:N] file using (i):i with boxplot"
do for [i=2:N] {
stats file using i every ::1 nooutput
lq = STATS_lo_quartile
uq = STATS_up_quartile
ir = uq - lq
min = lq - r * ir
max = uq + r * ir
cmd = cmd . sprintf(", file using (%d):($%d < %d || $%d > %d ? $%d : 1/0):1 every ::1 with labels offset 5,0", i, i, min, i, max, i)
}
eval cmd

final plot with labeled outliers

关于gnuplot - 在 Gnuplot 中的箱线图中标记离群值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25962271/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com