Автоматически помещать заголовок в gnuplot bar-stacked

Я сложил гистограммы с помощью gnuplot. В настоящее время я извлекаю только файл данных и устанавливаю заголовок данных вручную. Поскольку я сортирую свою базу данных по количеству данных, мне нужно время, чтобы перепечатать и посмотреть порядок.

Это мой файл Gnuplot:

set term pos eps font 20
set style data histogram
set style histogram rowstacked
set style fill solid border -1
set key invert reverse right outside 
set boxwidth 0.75
set format y "%.0f%%"
set style line 2 lc rgb "#EDEBE4" lt 1 lw 2
set style line 3 lc rgb "#A7ABA6" lt 1 lw 2
set title "Classification"

set ylabel "Percentage"
set xlabel "System"
set yrange [0:100]
set output 'output.eps'
plot 'datafile' \
    using($2):xtic(1)   t "stack-1" lt -1 fs pattern 3 , \
''  using($3)           t "stack-2" lt -1 fs pattern 2, \
''  using($4)           t "stack-3" lt -1 fs pattern 5, \
''  using($5)           t "stack-4" lt -1 fs pattern 9, \
''  using($6)           t "stack-5" ls 3, \
''  using($7)           t "stack-6" lt -1 fs pattern 6, \
''  using($8)           t "stack-7" lt -1 fs pattern 4, \
''  using($9)           t "stack-8" ls 2   

это мой текущий файл данных:

CS  35.08   33.12   22.49   3.72    2.73    1.03    1.76    0.08
FL  58.22   9.36    21.46   4.34    3.65    2.97    0.00    0.00
HB  40.27   19.29   18.52   14.37   6.13    0.91    0.29    0.21
HD  30.32   22.51   31.63   1.10    9.51    2.53    1.50    0.90
MR  34.65   24.37   15.59   7.46    15.42   1.56    0.66    0.29
ZK  29.65   18.54   30.63   6.91    9.46    1.28    2.85    0.68
All 36.74   23.88   22.01   7.40    7.18    1.42    1.06    0.31

Я должен изменить свой файл данных, чтобы он выглядел так:

    stacked-1   stack-2 stack-3 stack-4 stack-5 stack-6 stack-7 stack-8
CS  35.08   33.12   22.49   3.72    2.73    1.03    1.76    0.08
FL  58.22   9.36    21.46   4.34    3.65    2.97    0.00    0.00
HB  40.27   19.29   18.52   14.37   6.13    0.91    0.29    0.21
HD  30.32   22.51   31.63   1.10    9.51    2.53    1.50    0.90
MR  34.65   24.37   15.59   7.46    15.42   1.56    0.66    0.29
ZK  29.65   18.54   30.63   6.91    9.46    1.28    2.85    0.68
All 36.74   23.88   22.01   7.40    7.18    1.42    1.06    0.31

выход:

введите здесь описание изображения

Как создать заголовок/легенду гистограммы, который будет автоматически из моей первой строки в моем файле данных?. Также моему сценарию по-прежнему необходимо использовать стиль шаблона вручную. Спасибо!


person indi60    schedule 30.06.2014    source источник


Ответы (1)


С помощью title columnhead(2) вы можете выбрать заголовок определенного столбца, который будет использоваться в качестве ключевой записи. Итак, ваша команда plot становится

plot 'datafile' \
    using 2:xtic(1) title columnhead(1) lt -1 fs pattern 3 , \
''  using 3         title columnhead(2) lt -1 fs pattern 2, \
''  using 4         title columnhead(3) lt -1 fs pattern 5, \
''  using 5         title columnhead(4) lt -1 fs pattern 9, \
''  using 6         title columnhead(5) ls 3, \
''  using 7         title columnhead(6) lt -1 fs pattern 6, \
''  using 8         title columnhead(7) lt -1 fs pattern 4, \
''  using 9         title columnhead(8) ls 2   

Это довольно многословно, потому что ваш первый столбец не имеет заголовка, поэтому столбец, из которого выбирается заголовок, отличается на один от столбца, который используется для значений.

Если вы хотите вставить фиктивный заголовок для первого столбца, этого достаточно, поэтому используйте set key autotitle columnheader.

Измените datafile на

desc stacked-1   stack-2 stack-3 stack-4 stack-5 stack-6 stack-7 stack-8
CS  35.08   33.12   22.49   3.72    2.73    1.03    1.76    0.08
FL  58.22   9.36    21.46   4.34    3.65    2.97    0.00    0.00
HB  40.27   19.29   18.52   14.37   6.13    0.91    0.29    0.21
HD  30.32   22.51   31.63   1.10    9.51    2.53    1.50    0.90
MR  34.65   24.37   15.59   7.46    15.42   1.56    0.66    0.29
ZK  29.65   18.54   30.63   6.91    9.46    1.28    2.85    0.68
All 36.74   23.88   22.01   7.40    7.18    1.42    1.06    0.31

а затем использовать

set key invert reverse right outside autotitle columnheader
plot 'datafile' \
    using 2:xtic(1) lt -1 fs pattern 3 , \
''  using 3         lt -1 fs pattern 2, \
''  using 4         lt -1 fs pattern 5, \
''  using 5         lt -1 fs pattern 9, \
''  using 6         ls 3, \
''  using 7         lt -1 fs pattern 6, \
''  using 8         lt -1 fs pattern 4, \
''  using 9         ls 2   
person Christoph    schedule 30.06.2014