12/17/2007

Построение графиков в gnuplot: о легендах

Легенда - это подпись к рядам данных на графике, которая позволяет понять, к каким данным относится одна зависимость, а к каким - другая. Gnuplot называет легенды словом key, а не legend, и это нужно учитывать.

Как убрать легенду с графика?
Есть два способа. Первый: задать значение
gnuplot> set nokey
или можно указать параметр notitle при построении графика, например так:
gnuplot> plot f(x) notitle, "file.dat" title "data"
После этого в графике легенда отображаться не будет.


Как изменить положение легенды на графике?
Обычно легенда отрисовывается в правом верхнем углу графика. Изменить это можно при помощи команд:
gnuplot> set key bottom left
gnuplot> set key bottom right
gnuplot> set key top left
gnuplot> set key top right

Здесь перечислены варианты, позволяющие отрисовывать легенду в левом нижнем, правом нижнем, левом верхнем и правом верхнем углу графика соответственно. Так же можно попросить gnuplot рисовать легенду за пределами графика - для этого следует добавить параметр outside, или под графиком - для этого есть параметр bottom. Например:

gnuplot> set key outside bottom

Так же можно задать положение легенды с помощью координат, хотя это менее гибкий способ. Если хотите сдвинуть легенду в положение (X,Y)=(100,100), даём команду:

gnuplot> set key 100,100

Координата (100,100) это позиция точки между текстом и линией/символом первой линии легенды. Координаты задаются по осям X и Y.


Как избавиться от отображения погрешностей в легенде?
Когда один из рядов данных имеет погрешности, они тоже отображаются в легенде (например, на рисунке ниже). Даже тогда, когда погрешности по оси Y, они отображаются в легенде горизонтально, и это не нужно.

Например, есть ряды данных:
#  X     Y     Y-погрешность
1.0 1.2 0.2
2.0 1.8 0.3
3.0 1.6 0.2

Строим график:

gnuplot> set xrange [0:4]
gnuplot> set yrange [0:3]
gnuplot> plot "test.dat" usi 1:2:3 title "data" w yerrorbars



и данные о погрешностях отображаются так, как показано на верхнем рисунке.
Может быть, не очень изящный приём:

gnuplot> set xrange [0:4]
gnuplot> set yrange [0:3]
gnuplot> plot "test.dat" usi 1:2:3 notitle w yerrorbars 1,\
"test.dat" usi 1:2 title "data" w points 1
Но работает хорошо.



Как изменить межстрочный интервал в легенде?

Это можно сделать при помощи команды set key spacing.
Например, чтобы сделать полуторный межстрочный интервал в легенде, нужно:
gnuplot> set key spacing 1.5
Это увеличит расстояние между строками в легенде.


Как сделать рамку вокруг легенды?
Чтобы вокруг легенды появилась рамка, следует использовать set key box.
Тип линии рамки будет тот же, что вокруг самого графика. Изменить это можно так:
gnuplot> set style line 1 lt 2 lw 3
gnuplot> set key box linestyle 1
Таким образом, вокруг легенды появится рамка.

7 комментариев:

  1. Я вот такой сайтец раскопал по этому вопросу , каогда нужно было использовать покет http://t16web.lanl.gov/Kawano/gnuplot/index-e.html

    ОтветитьУдалить
  2. Расскажите пожалуйста про надписи на русском языке с utf8

    ОтветитьУдалить
  3. 2 PampKin Head пишет...
    Я вот такой сайтец раскопал по этому вопросу
    Дык, я ж писал в предыдущем посте - мои рассказы основаны на том сайте. :-)

    Ресурс очень классный, но давно не обновлялся и на русский перевода нет.

    2 Анонимный пишет...
    Расскажите пожалуйста про надписи на русском языке с utf8
    Народ ставит гнуплот 4.3, а у меня 4.0 и кои8, поэтому никаких проблем у меня нет. Я сторонник поговорки "лучшее - враг хорошего".

    ОтветитьУдалить
  4. Проблемы с PNG и русскими буквами под Windows. set encoding koi8r помогает только для postscript терминала. Может быть знаете как решить проблему?

    ОтветитьУдалить
  5. подскажите можно ли в ручную устанавливать размер рамки вокруг легенды?

    ОтветитьУдалить
  6. Спасибо Вам за Ваши статьи!

    ОтветитьУдалить
  7. как вывести легенду над графиком (т.е. чтобы график её не пересекал)?

    ОтветитьУдалить