我需要一些关于使用gnuplot处理CSV文件的帮助。 我的CSV文件如下所示:
a,1002
b,612
b,893
b,361
b,932
b,483
b,899
b,614
c,722
d,1038
d,1580
我希望它将第二列用于Y值,行号用作X值。这很容易做到。
我设法把第一列作为xtics标签,但是经过几个小时的Google-ing,我没有找到一个解决方案来告诉gnuplot只打印一个标签一次(我的x轴上挤满了标签,让它变得难以理解) )。
我需要类似的东西:
.
. b
.a ***** c
.** *** d ****
. ************
........................
但我得到了这个:
.
.
. *****
.** *** ****
. ************
........................
sdflksdjflksdjflksdjflkadjflksjdflkasj
标签在轴上或图形线上也没问题,没关系。
答案 0 :(得分:2)
要设置非定期的xtics,请使用
set xtics ("a" 1, "b" 2, "c" 9, "d" 10)
您可以通过简单的脚本从数据中提取信息,例如
cut -f1 -d, data | while read name ; do
let line++
if [[ $name != $oldname ]] ; then
oldname=$name
echo "'$name'" $line
fi
done
答案 1 :(得分:1)
一些进一步的建议:
set pointsize 2.5
set xtics ("a" 1, "b" 5, "c" 9, "d" 10.5)
set xrange [0:12]
plot "< cat -n aa.csv | sed -e 's/,/ /g'" using 1:3 pt 7 notitle
产生不等间距的标签代替x-ticks(如@choroba所示,这也为自动确定较大数据集的中间区间提供了一种方法)。 (此处aa.csv
包含您问题中显示的数据。)
如果您希望标签出现在绘图区域而不是x轴下,那么您可以从
开始set format x ""
然后将您的标签置于上述任何类别中的最高值a,...,d。