我有一个带有一组不同x值的点的图: x = 0.5分为5分,x = 0.6分为5分,x = 1.4分为5分,x = 1.6分为5分。
现在我想为每个x值创建一个boxplot。但不知何故,我所有的箱图都在x = 0.5。我希望在正确的x值下创建箱图。 2 x值之间的距离可以不同。我当前的x值是0.5,0.6,0.7,0.8,0.9,1.0,1.2,1.4和1.6,但它们对于不同的图也可以是不同的。我该怎么做?
这是我的观点的GNUPlot脚本:https://dl.dropboxusercontent.com/u/26464165/Points.gnu
这是我的箱图的GNUPlot脚本:https://dl.dropboxusercontent.com/u/26464165/Boxplots.gnu
谢谢你的时间!
答案 0 :(得分:9)
您必须重新排列箱图的数据。统计数据是在完整列上计算的。因此,您必须重新安排数据,如:
# 1.0 1.2 1.4 ...
2.2 2.2 3.06
2.0 2.46 2.93
2.2 2.46 3.06
2.0 2.4 2.8
1.73 2.33 2.8
然后你可以用以下方式绘制它:
set style fill solid 0.25 border -1
set style boxplot outliers pointtype 7
set style data boxplot
set title 'My Plot' font 'Arial,14';
set xtics ('1.0' 1, '1.2' 2, '1.4' 3)
plot for [i=1:3] 'data.txt' using (i):i notitle
4.6.4的结果是:
不是手动编写xtics
,而是使用Unix命令行工具提取它们,如图所示。在https://stackoverflow.com/a/10799204/2604213中:
header = "`head -1 data.txt | cut -b 2-`"
set for [i=1:words(header)] xtics (word(header, i) i)
答案 1 :(得分:3)
using
语句的第四个字段(using x:data:width:level
)提供解决方案。
您将所有数据放在一列中,并附带一个因子列,给出每个数据的级别:
2.2 1.0
2.2 1.2
3.06 1.4
2.0 1.0
...
只要水平正确,数据出现的顺序就不重要了。级别将转换为字符串,该字符串将覆盖xtics。
修改Christoph的剧本
set style fill solid 0.25 border -1
set style boxplot outliers pointtype 7
set style data boxplot
plot "data.txt" using (1):1:(0.5):2
将生成以下内容: