1

我有一个如下所示的数据文件。现在,我想使用第 9 列、第 10 列作为误差线制作直方图。效果很好。但是有一个选项只能绘制特定的行吗?

我在另一个使用三元运算符的线程中尝试了解决方案:

plot 'Härte StS-123 bis 151.txt' using ( ( $0 == 4 || $0 == 6 ) ? $9 : 1/0 ):($9+$10):($9-$10):xticlabels(2)

这确实绘制了第 4 行和第 6 行,但在数据集之间留下了空白区域。

有没有其他方法可以实现这一目标?

数据文件:


StS-123a“SBR/THF”50.10 49.60 49.20 50.70 50.00 49.50 49.85 0.49 0.00974176

StS-123b “SBR / THF” 51.00 50.40 50.40 52.00 52.80 50.60 51.20 0.90 0.017614257

StS-124a“SBR+2phrGraphit”49.60 49.40 49.30 48.90 49.40 49.10 49.28 0.23 0.004599753

4

1 回答 1

1

您可能想要的是indexplot 命令的选项:

plot 'datafile' index 4 u 9:($9-$10):($9+$10):xticlabels(2), \
     '' index 6 u 9:($9-$10):($9+$10):xticlabels(2)

这应该只绘制来自第 4 和第 6 个数据集(行)的数据,尽管您可以在 plot 命令中调整两种不同的样式。

您想连接两个数据集中的值吗?这可能更棘手。

如果您只想绘制具有数据的第 4 行和第 6 行的数据,可以在 gnuplot 中使用外部命令,例如:

plot "<sed '/^$/d' data.dat | sed -n '4p; 6p'" u 9:($9-$10):($9+$10):xticlabels(2)

(在这种情况下,这可能不是使用 sed 的最紧凑的方式,但它会删除空行,然后返回第 4 行和第 6 行。)

于 2012-11-22T14:07:19.567 回答