我想要绘制一些相当简单的数据,理想情况下是直方图或折线图,但我无法弄清楚如何做。
以下是一些示例数据:
T Item Temp
1 Leaf 10
1 Car 12
2 Leaf 14
3 Car 23
4 Car 29
4 Leaf 30
在此示例中,T是时间,Item是项目名称,Temp是此时的项目温度。
我尝试绘制图表时遇到了一些问题:
如果我的数据采用以下形式,那么我可以更容易地进行绘图,但不幸的是,它没有采用这种方式格式化:
T Car Leaf
1 12 10
2 0 14
3 24 0
4 29 30
gnuplot是否能够绘制前一个示例,或者我是否必须编写预处理器以将提供的数据重新格式化为更简单的第二个数据?
答案 0 :(得分:0)
我相信这可以完全在gnuplot中完成。这应该可以帮到你:
names=("Car Leaf")
plot for [name in names] 'test.txt' u 1:((stringcolumn(2)eq name?$3:0)) smooth freq with lp title name
输入help smooth
和help stringcolumn
以获取更多信息
如果您想自动填充names
变量,可以使用此system
命令:
names=system("awk '{print $2}' test.txt | tail -n +2 | sort | uniq")
boxes
这里有一个建议:
set boxwidth 0.5/(words(names))
plot for [i=0:words(names)] 'test.txt' u ($1-0.5-i/(words(names)+1.0)):((stringcolumn(2)eq word(names,i)?$3:0)) smooth freq with boxes title word(names,i)
这是你应该得到的: