Как я могу обосновать метки при построении «с метками» в Gnuplot? - PullRequest
6 голосов
/ 09 августа 2010

Следующая команда plot создает гистограмму, и над каждой гистограммой значение отображается в виде метки, отформатированной с помощью gprintf:

plot "data.txt" using 6:1 index 0 notitle with boxes linestyle 1,\
     "data.txt" using 6:(0.7):(gprintf("%5.2f", $1)) index 0 notitle \
                                       with labels font "Courier,34" rotate left

Я бы хотел, чтобы метки значений были выровнены по правому краю, чтобы я мог использовать более привлекательный шрифт Helvetica вместо Courier для выравнивания десятичных точек.

Итак, как я могу включить обоснование в приведенную выше команду?

Мне не удалось найти что-либо об этой конкретной проблеме в документации Gnuplot или в Интернете. Другие метки можно легко обосновать, но возможно ли это при печати с метками?

Ответы [ 2 ]

5 голосов
/ 27 октября 2012

Я не могу проверить ваш конкретный пример, но у меня есть мой, который выглядел так:

...
plot "test.dat" using ..., \
"" using ($1-100000):2:3 with labels rotate left notitle
...

... где часть "rotate left" была взята из OP.

Ну, мне не очень повезло с поиском информации о "выравнивании" или "обосновании" ярлыков в сети; поэтому я попытался посмотреть в онлайн-справке gnuplot. По сути, соответствующий материал находится под help set label - я точно не знаю, как я до него дошел, но вот мой журнал команд ниже;

$ gnuplot ... G N U P L O T Version 4.4 patchlevel 2 ... Terminal type set to 'wxt' gnuplot> help with labels Sorry, no help for 'with labels' gnuplot> help with Functions and data may be displayed in one of a large number of styles. The `with` keyword provides the means of selection. Syntax: with { {linestyle | ls } ... where is one of lines dots steps errorbars xerrorbar xyerrorlines points impulses fsteps errorlines xerrorlines yerrorbars linespoints labels ... ... gnuplot> help labels The `labels` style reads coordinates and text from a data file and places the text string at the corresponding 2D or 3D position. 3 or 4 input columns of basic data are required. .... 3 columns: x y string # 2D version ... See also `datastrings`, `set style data`. gnuplot> help set label Arbitrary labels can be placed on the plot using the `set label` command. Syntax: set label {} {""} {at } {left | center | right} {norotate | rotate {by }} ... By default, the text is placed flush left against the point x,y,z. <b>To adjust the way the label is positioned with respect to the point x,y,z, add the justification parameter, which may be `left`, `right` or `center`,</b> indicating that the point is to be at the left, right or center of the text. Labels outside the plotted boundaries are permitted but may interfere with axis labels or other text. <b>If `rotate` is given, the label is written vertically</b> (if the terminal can do so, of course). <b>If `rotate by ` is given,</b> conforming terminals will try to write the text at the specified angle; non-conforming terminals will treat this as vertical text.

Соответствующие части выделены жирным шрифтом; и они объясняют одно заблуждение, которое у меня было - увидев rotate left в примере OP, я подумал, что left является атрибутом rotate, однако это не так - left - это отдельный параметр выравнивания, тогда как rotate - это отдельное ключевое слово поворота (то есть rotate left не означает « поворот против часовой стрелки на 90 градусов », как я изначально думал).

Если это так, то можно инвертировать эти два ключевых слова:

...
plot "test.dat" using ..., \
"" using ($1-100000):2:3 with labels left rotate notitle
...

... и получите точно такой же выходной график. И если наконец мы заменим left на right, как в:

...
plot "test.dat" using ..., \
"" using ($1-100000):2:3 with labels right rotate notitle
...

... мы видим, что метка по-прежнему повернута "влево" (против часовой стрелки на 90 градусов) - однако теперь она выровнена по правому краю относительно позиции.

Ну, надеюсь, это поможет,
Ура!

1 голос
/ 16 августа 2010

Вы указываете ширину печатного поля в 5 пробелов, используя формат "%5.2f".Это занимает 2 пробела для дробной части и один пробел для десятичной точки, оставляя только 2 пробела для целой части числа.Таким образом, если вы печатаете числа, отличные от 0.7, которые вы указали, результирующая строка будет шире.Кроме того, Helvetica - это не моноширинный шрифт, поэтому ширина символов для чисел не одинакова.Таким образом, выравнивание вывода по правому краю не решит проблему - «.11» и «.88» не будут выровнены по десятичной точке.

...