我有许多数值数据集,我计算了平均值,中位数,偏差,最小值和最大值,我想将它们可视化(在Linux上,没有X,到图像文件)。
我已经看过gnuplot用于绘制误差条的功能,但我有一些问题:我的数据集沿X轴紧密排列在一起,而gnuplot的误差条在X上占用了太多空间轴;我只看到它能够绘制最小值和最大值以及两者之间的数据点(大概是平均值),我认为没有很好的方法可以将中位数和偏差拟合到该模型中。
有没有人知道在gnuplot中解决这些问题的方法?或者,或许是一个比gnuplot更好的程序?
答案 0 :(得分:1)
我使用R的lattice
包来绘制统计数据。
您可以查看R Graph Gallery示例脚本以呈现错误栏(“置信区间”)。
您不需要X来显示图形。在打印前将格子图功能包裹在postscript
设备中:
mtxf.ps <- "myBarchart.ps"
postscript(mtxf.ps,
width = 6,
height = 4,
paper = 'special',
horizontal = F)
mtx.p <- barchart(...)
print(mtx.p)
dev.off()
该代码段将barchart
打印到PostScript文件,您可以使用Imagemagick将其转换为PNG或其他格式:
$ convert -density 200 myBarchart.ps myBarchart.png
R是一种奇怪的语言,但一旦你弄清楚它的怪癖,就会表现出来。 This是关于R的非常好的介绍性书籍,this是一本关于如何在不同场景中使用lattice
的非常好的书。
答案 1 :(得分:1)
我认为你不应该把中位数和平均数放在同一个地块上,因为它们根本不同。
显示中位数统计量的标准方法是"box-and-whisker"-plot,它显示最小值,第一个四分位数,中位数,第三个四分位数和最大值。为了在gnuplot中获得它,你必须使用multiplot进行多次传递:
set multiplot
set style fill empty
set boxwidth 0.4
plot "data" using 1:3:2:6:5 with candlesticks lt -1 lw 5 notitle,\
'' using 1:4:4:4:4 with candlesticks lt -1 lw 10 notitle
set boxwidth 0.3
plot "data" using 1:2:2:2:2 with candlesticks lt -1 lw 5 notitle,\
'' using 1:6:6:6:6 with candlesticks lt -1 lw 5 notitle
这假定您的“数据”文件按此顺序具有列x值,最小值,第一四分位数,中位数,第三四分位数,最大值。当然,您可以使用框宽,线型(lt
)和线宽(lw
)来获得所需的内容。
如果您想要标准偏差的平均值,则可以使用标准误差条;我相信您可以使用boxwidth
来调整误差线的大小。
要设置输出类型,请使用set terminal
。我建议使用矢量格式以避免像素化。您可以在gnuplot提示符下使用help set terminal
查看安装中可用的终端。此外,使用butt
选项(如果可用)(防止线条“过冲”)。
答案 2 :(得分:0)
除了Svante的回答,您还可以使用
set bars small
将'x-part'移除到误差线。例如,
#!/bin/bash
echo "1 2 2.0 2.4
2 4 3.9 4.5
3 1.4 0.1 1.5
4 2.9 2.2 4" > "data.dat"
gnuplot<<EOF
set term png small; set output "data.png"
set xrange [0:5]; set yrange [0:5]
set bars small
plot "./data.dat" using 1:2:3:4 with errorbars
set output ; set term pop
EOF
汤姆
答案 3 :(得分:0)
您可以查看MathGL - 它是GPL绘图库,可以在控制台中绘图(不需要X)。它有大量的图形类型(包括2和3范围的数据),而不是gnuplot。