为了快速可视化测量之间的差异,我想使用gnuplot在单个图中绘制两个(后面的多个)箱图。
基本上我想要想象每次测量的Five-number-summary(最小1号曲线中位数平均值3最大值)。
我的数据文件中的每一列都是'代表测量样本
我的数据采用以下形式:
A B C D
1.008 1.008 . .
0.909 0.909 . .
0.975 0.975
2.647 2.647
6.530 1.901
1.819 0.909
1.819 0.909
2.695 0.909
0.529 0.529
0.964 0.964
2.728 0.909
1.819 0.909
4.133 1.108
11.275 6.133
5.920 5.920
. .
我希望它看起来像boxplot demo
但是我无法让演示工作,因为它们似乎使用第三列向右滑动一个箱形图,但我真的不明白它是如何工作的。
为了澄清,在R中我会做这样的事情:
par(mfrow=c(1,3))
b1 <- boxplot(datafile$A)
b2 <- boxplot(datafile$B)
b3 <- boxplot(datafile$C)
我也想知道如何以相同的比例绘制箱形图。我担心少数几个非常高的值可能会拉伸最大值。箱子的胡须太多了,以至于箱子本身变得太小,我看不到两个箱子中间的差异。
修改
建议的解决方案没问题,直到我尝试绘制其余数据。如果我绘制数据,那么情节会变得如此拥挤,以至于无法看到某些东西
以下是仅包含其余数据的前1000个条目的示例
如何将异常值包含在框中? (我不想丢弃它们。)
答案 0 :(得分:3)
在示例中,他们使用固定数字来设置每个箱图:
plot 'data.txt' using (0):1 with boxplot
绘制位于x值0
的第一列中的数据。对于两个地块,它是相应的:
set style data boxplot
plot 'data.txt' using (0):1, '' using (1):2
Gnuplot无法自动确定列数,但您可以按如下方式实现某种自动化:
file = 'data.txt'
header = system('head -1 '.file);
N = words(header)
set xtics ('' 1)
set for [i=1:N] xtics add (word(header, i) i)
set style data boxplot
unset key
plot for [i=1:N] file using (i):i
如果我复制了你展示的两个列,并用A B C D
标记它们,我会用gnuplot 4.6.3得到以下图:
如您所见,不考虑异常值。要隐藏异常值,请使用set style boxplot nooutliers
。
答案 1 :(得分:0)
我遇到了同样的问题并找到了原因。如果您在数据集中多次使用异常值,那么gnuplot会将它们绘制成一行,从而生成与您所显示的图形类似的图形。
显然你无法避免它或抑制其他值。你可以做的是告诉gnuplot使用胡须,它们也标记了最大值和最小值。根据维基百科,这是使用胡须的一种替代方法。我不知道它是否适合您的情节,但它通过规避它来解决问题。
我不确定我是否可以帮助你,但也许遇到这种情况的人发现它很有用,或者甚至可以提出一种方法来删除异常值的附加点。