Как использовать заданное смещение только для 1 источника данных в gnuplot? - PullRequest
1 голос
/ 09 июля 2019

Я хочу построить вместе два источника данных в gnuplot: один из файла данных, используя текст в качестве x-данных (с xticlabels и панелями ошибок), а другой константу.

Я не хочу, чтобы xticlabels достигалстороны графика, поэтому я использую «установить смещение».Однако я do хочу, чтобы константа достигла сторон графика.

Пример сценария gnuplot:

set terminal pngcairo size 500, 500
file = 'data.txt'
set output 'plot.png'
set xtics rotate by -45
set yrange [0:1]
set offset 0.5,0.5,0,0

plot file using 0:2:3:xticlabels(1) with yerrorbars notitle,\
0.5 notitle

С соответствующим файлом data.txt:

"Europe"    0.4 0.03
"North America" 0.8 0.05
"South America" 0.1 0.08
"Asia"  0.7 0.01
"Africa"    0.9 0.03
"Australia" 0.2 0.03

Предоставляет следующий график: Plot with constant function not reaching left/right edges

Однако мне нужен следующий сюжет: Plot with constant function reaching left/right edges

Как мне этого добиться?

Ответы [ 2 ]

1 голос
/ 09 июля 2019

Вы можете достичь того же результата, если просто правильно настроить xrange[]. В вашем случае при использовании xticlabels(1) Европа = 0 и Австралия = 5. Итак, просто установите xrange[-0.5:5.5]. Если количество предметов (здесь 6) заранее неизвестно, вы можете получить его через |$Data| или stats $Data и STATS_records.

Код:

### border when using xticlabels()
reset session

$Data <<EOD
"Europe"    0.4 0.03
"North America" 0.8 0.05
"South America" 0.1 0.08
"Asia"  0.7 0.01
"Africa"    0.9 0.03
"Australia" 0.2 0.03
EOD

set xtics rotate by -45

set xrange [-0.5:5.5]
set yrange [0:1]

plot $Data using 0:2:3:xticlabels(1) with yerrorbars notitle,\
    0.5 notitle
### end of code

Результат:

enter image description here

1 голос
/ 09 июля 2019

Вы можете нарисовать константу в виде стрелки без головы:

set arrow from graph 0, first 0.5 to graph 1, first 0.5 nohead lt 1
...