在Gnuplot中显示长标签

在Gnuplot中显示长标签,gnuplot,Gnuplot,我目前在一家公司工作,在那里我必须评估一项调查。现在我必须绘制数据图。 他们想要一张表格,左边列有问题,右边列有一个点,距离问题的距离表示平均分数[0:4]。我的第一次尝试是使用gnuplot,因为我以前使用过它,现在遇到了一个问题,即如果问题的长度(我已经将其缩短到最多50个字符)太长,gnuplot将无法正确显示绘图。整个情节被推到了右边,你再也看不懂了 我的数据集如下所示 Eltern können sich über unsere Schule vielfä..., 2.2 Elter

我目前在一家公司工作,在那里我必须评估一项调查。现在我必须绘制数据图。 他们想要一张表格,左边列有问题,右边列有一个点,距离问题的距离表示平均分数[0:4]。我的第一次尝试是使用gnuplot,因为我以前使用过它,现在遇到了一个问题,即如果问题的长度(我已经将其缩短到最多50个字符)太长,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
我目前得到的结果是


是评估的其余部分的样子的图像(由LaTeX制成,带有datatool、loongtable和LTXtable)

基本上,在屏幕0.5上使用命令
set lmargin来固定左边距就足够了。Gnuplot不太擅长根据字体类型和字体大小来估计边距。我从这个小小的变化中得到的结果是:

Gnuplot无法自动换行。您可以使用
epsletex
终端,将标签放入固定长度的
\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
但这可能会给你带来获取字体的问题。我还没有尝试过与Droid SAN一起使用
epsletex

作为另一个选项,您可以使用python脚本预处理数据文件并插入换行符。使用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
设置终端pdfcairo增强字体“Droid Sans,9”线宽4圆角字体比例1.0
设置输出“template.pdf”
设置样式行80 lt rgb“#8080”
设置边框3背面线条样式80#删除顶部和右侧边框
设置错误
设置数据文件sep','
将xtics设置为0,1,4。
将ytics字体设置为“4”右侧
设置xlabel“注释”
设置样式行1 lc rgb“#0060AD”lt 1 lw 2 pt 7 pi-1 ps 1.0
设置点间隔框3
设置xrange[0:4]
将lmargin设置为屏幕0.3
使用2:0:yty(1)notitle w lp ls 1绘制“
你得到了一个好结果


太好了,有没有办法给gnuplot一个固定宽度的标签并自动换行?