使用 CSV 中的列作为使用 gnuplot 绘制柱形图的类别标签
Use column from CSV as a category label for plotting column chart using gnuplot
我有一个 CSV 文件,如下所示:
frameNo dataSeg paritySeg frameType
0 17 3 k
1 2 1 d
2 3 1 d
3 3 1 d
4 3 1 d
5 2 1 d
6 3 1 d
7 3 1 d
8 4 1 d
我能够绘制堆叠柱形图,显示每帧的数据和奇偶校验段的数量。看起来像这样:
然而,我想添加的是,在最后一列中具有 "k" 标记的那些列(数据和奇偶校验)以不同的方式绘制。基本上,区分两类 - "d" 和 "k"。
可以使用 gnuplot 吗?
这是我正在使用的脚本:
set style histogram rowstacked;
set style data histograms;
set style fill solid;
set datafile separator "\t";
set terminal png size 2500,1500 enhanced font ",30";
set title "";
set tics font ",25";
set xlabel "Frame #" font ",25";
set ylabel "# of segments" font ",25";
set key outside;
set xrange [0:];
plot "segments.csv" using 2 t "Data", "" using 3 t "Parity";'
如果不满足此条件,您可以对正在绘制的列施加自定义条件并提供无效值(表示跳过特定数据点):
set terminal pngcairo size 1200,600 enhanced font ",30";
set output 'test.png'
set style histogram rowstacked;
set style data histograms;
set style fill solid;
#set datafile separator "\t";
set title "";
set tics font ",25";
set xlabel "Frame #" font ",25";
set ylabel "# of segments" font ",25";
set key outside;
set xrange [0:];
fName = 'segments.csv'
plot \
fName using (strcol(4) eq 'd'?:1/0) t "Data d" lc rgb '#666666', \
fName using (strcol(4) eq 'd'?:1/0) t "Parity d" lc rgb '#ff0000', \
fName using (strcol(4) eq 'k'?:1/0) t "Data k" lc rgb '#000000', \
fName using (strcol(4) eq 'k'?:1/0) t "Parity k" lc rgb '#990000'
这将给出(使用您问题中的示例数据):
我有一个 CSV 文件,如下所示:
frameNo dataSeg paritySeg frameType
0 17 3 k
1 2 1 d
2 3 1 d
3 3 1 d
4 3 1 d
5 2 1 d
6 3 1 d
7 3 1 d
8 4 1 d
我能够绘制堆叠柱形图,显示每帧的数据和奇偶校验段的数量。看起来像这样:
然而,我想添加的是,在最后一列中具有 "k" 标记的那些列(数据和奇偶校验)以不同的方式绘制。基本上,区分两类 - "d" 和 "k"。 可以使用 gnuplot 吗?
这是我正在使用的脚本:
set style histogram rowstacked;
set style data histograms;
set style fill solid;
set datafile separator "\t";
set terminal png size 2500,1500 enhanced font ",30";
set title "";
set tics font ",25";
set xlabel "Frame #" font ",25";
set ylabel "# of segments" font ",25";
set key outside;
set xrange [0:];
plot "segments.csv" using 2 t "Data", "" using 3 t "Parity";'
如果不满足此条件,您可以对正在绘制的列施加自定义条件并提供无效值(表示跳过特定数据点):
set terminal pngcairo size 1200,600 enhanced font ",30";
set output 'test.png'
set style histogram rowstacked;
set style data histograms;
set style fill solid;
#set datafile separator "\t";
set title "";
set tics font ",25";
set xlabel "Frame #" font ",25";
set ylabel "# of segments" font ",25";
set key outside;
set xrange [0:];
fName = 'segments.csv'
plot \
fName using (strcol(4) eq 'd'?:1/0) t "Data d" lc rgb '#666666', \
fName using (strcol(4) eq 'd'?:1/0) t "Parity d" lc rgb '#ff0000', \
fName using (strcol(4) eq 'k'?:1/0) t "Data k" lc rgb '#000000', \
fName using (strcol(4) eq 'k'?:1/0) t "Parity k" lc rgb '#990000'
这将给出(使用您问题中的示例数据):