gnuplot: можно ли построить координаты (x, y) помимо каждой точки? - PullRequest
1 голос
/ 27 июля 2011

Я нашел ответ здесь об использовании меток с точками, но это работает только для 1 столбца с меткой, тогда как для построения графика (x, y) вместе с точкой мне нужно использовать 2 .

Так что мне нужно что-то вроде plot "data.txt" using ($1):($2):1:2 with labels, "data.txt" using 1:2, где ($1):($2):1:2 будет (x) :( y) координатой точки на изображении, а 1: 2 будет меткой, за исключением того, что она не работает, так как неверный синтаксис, поэтому в правильном месте отображается только первое значение.

Ну, я думаю, я могу использовать что-то вроде plot "data.txt" using ($1+2):($2+2):1 with labels, "data.txt" using ($1+10):($2+2):2 with labels, "data.txt" using 1:2, чтобы вручную установить интервал, но, черт возьми, этот уродливый / низкоуровневый / хакерский / плохой / и т.д.

1 Ответ

4 голосов
/ 27 июля 2011

как насчет этого:

set key off
get_point(x,y) = sprintf("(%.0f,%.2f)", x, y)
offset(y) = (y<0.5) ? (y - 0.05) : (y + 0.05)

plot [-1:6] "-" u ($1):(offset($2)):(get_point($1, $2)) with labels, "-" u 1:2 w l
0 0.20323
1 0.19147
2 0.50213
3 0.17599
4 0.07732
5 0.66897
e
0 0.20323
1 0.19147
2 0.50213
3 0.17599
4 0.07732
5 0.66897
e

Что он делает:
С макросом get_point вы можете легко сформировать строку, которая будет вашими x- и y-координатами. Функция offset - просто немного отодвинуть метки от кривой. Это может быть полезно, если ваши данные имеют конкретную форму (как в этом случае глобальное среднее значение 0,5).
Конечно, сценарий выглядит лучше, если вы используете файл данных вместо данных в графическом файле.

...