2014-07-01 4 views
1

В настоящее время я работаю в компании, где мне необходимо оценить опрос. Теперь мне нужно сделать график данных. Им нужна таблица с вопросами в левом столбце и точкой в ​​правом столбце с расстоянием до вопроса, который символизирует средний класс [0: 4]. Моя первая попытка заключается в использовании gnuplot, потому что я использовал его раньше и теперь столкнулся с проблемой, что если длина вопроса (я уже сократил их до 50 символов), слишком длинный gnuplot имеет проблему, отображающую график правильно. Весь сюжет попадает вправо, и вы больше не можете его прочесть.Отображение длинных меток в Gnuplot

Мой набор данных выглядит следующим образом

Eltern können sich über unsere Schule vielfä..., 2.2 
Eltern werden über wichtige Entscheidungen inf..., 2.4 
Eltern wissen über Projekte der Schule Bescheid, 2.4 
Eltern erfahren Planung und Durchführung von F..., 1.5 
Die Schule hat einen guten Ruf, 2.8 

А вот мой Gnuplot файл

set terminal pdfcairo enhanced font "Droid Sans,9" linewidth 4 rounded fontscale 1.0 
set output "template.pdf" 
set style line 80 lt rgb "#808080" 
set border 3 back linestyle 80 #remove top and right border 
set xtics nomirror 
set ytics nomirror 
set datafile sep ',' 
set xtics 0,1,4. 
set ytics font ",4" 
set xlabel "Note" 
set style line 1 lc rgb "#0060AD" lt 1 lw 2 pt 7 pi -1 ps 1.0 
set pointintervalbox 3 
set xrange [0:4] 
plot 'datafiles/adler_organisation.dat' using 2:0:ytic(1) notitle w lp ls 1 

В результате я в настоящее время получаю

enter image description here

Here изображение как остальная часть оценки выглядит (сделанная в L aTeX с datatool, loongtable и LTXtable).

ответ

1

В основном достаточно зафиксировать левое поле командой set lmargin at screen 0.5. Gnuplot не очень хорошо оценивает поля, основанные на типе шрифта и размере шрифта. В результате я получаю с этим небольшим изменением является:

enter image description here

Gnuplot не может обернуть длинную линию автоматически. Вы можете использовать терминал epslatex поставить метки в \parbox с фиксированной длиной для достижения этой цели, как и с

label(s) = sprintf('\parbox{4cm}{\raggedleft %s}', s) 
set ytics right 
plot 'datafiles/adler_organisation.dat' using 2:0:ytic(label(strcol(1))) notitle w lp ls 1 

Но это, возможно, даст вам проблемы с получением шрифтов. Я не пробовал использовать epslatex вместе с Droid Sans.

В качестве другого варианта вы можете использовать скрипт python для предварительной обработки вашего файла данных и вставки строк. С питона скрипт wraplabels.py:

from __future__ import print_function 
import sys 
import textwrap 

with open(sys.argv[1], 'r') as f: 
    for line in f: 
     l, v = line.split(',') 
     print('"{}",{}'.format('\\n'.join(textwrap.wrap(l.strip(), 30)), v), end='') 

и сценарий GNUPLOT

set terminal pdfcairo enhanced font "Droid Sans,9" linewidth 4 rounded fontscale 1.0 
set output "template.pdf" 
set style line 80 lt rgb "#808080" 
set border 3 back linestyle 80 #remove top and right border 
set tics nomirror 
set datafile sep ',' 
set xtics 0,1,4. 
set ytics font ",4" right 
set xlabel "Note" 
set style line 1 lc rgb "#0060AD" lt 1 lw 2 pt 7 pi -1 ps 1.0 
set pointintervalbox 3 
set xrange [0:4] 
set lmargin at screen 0.3 
plot '< python wraplabels.py datafiles/adler_organisation.dat' using 2:0:ytic(1) notitle w lp ls 1 

вы получите хороший результат

enter image description here

+0

То велик, есть способ, чтобы дать Gnuplot фиксированную ширину для yticlabels и имеют автоматические разрывы линий? – HackHerz

Смежные вопросы