Я использую следующие gnuplot
команды для создания графика:
#!/bin/bash
gnuplot << 'EOF'
set term postscript portrait color enhanced
set output 'out.ps'
plot 'data_file' u 3:2 w points, '' u 3:2:($4!=-3.60 ? $1:'aaa') w labels
EOF
где data_file
выглядит так:
O4 -1.20 -0.33 -5.20
O9.5 -1.10 -0.30 -3.60
B0 -1.08 -0.30 -3.25
B0.5 -1.00 -0.28 -2.60
B1.5 -0.90 -0.25 -2.10
B2.5 -0.80 -0.22 -1.50
B3 -0.69 -0.20 -1.10
Я хочу, чтобы gnuplot пометил все точки строками, найденными в столбцах 1
, , кроме , где столбец 4
равен -3.60
, и в этом случае я хочу aaa
строка. Что я получаю, так это то, что точка данных $4=-3.60
правильно помечается как aaa
, но остальные вообще не помечаются .
Обновление:У gnuplot нет проблем с отображением чисел в качестве меток с использованием условного оператора, т.е. :любой столбец, кроме 1
, корректно отображается в качестве метки для каждой точки с соблюдением наложенных условий. То есть в этой строке отображается столбец2
(числа )как точечные метки относительно условного оператора:
plot 'data_file' u 3:2 w points, '' u 3:2:($4!=-3.60 ? $2:'aaa') w labels
Обновление 2:У него также нет проблем с отображением столбца 1
в виде точечных меток, если я рисую его как целое , т.е. без использования условного оператора. То есть,эта линия правильно отображает все метки точек в столбце1
(струны):
plot 'data_file' u 3:2 w points, '' u 3:2:1 w labels
Очевидно, что проблема заключается в использовании условного оператора вместе со строковым столбцом. Любой из них, используемый отдельно, работает просто отлично.