Ваши ярлыки находятся в неправильных позициях, потому что ваш label
график начинается с 1, то есть вы пропускаете первую запись.Кроме того, я не понимаю, почему вы рисуете круговые части против часовой стрелки, а метки - по часовой стрелке.
Вот рабочая версия вашего сценария, без некоторых частей, которые являются лишними для демонстрации.Обе метки и части круговой диаграммы строятся, начиная с угла A = 0
(обратите внимание на вторую инициализацию между двумя графиками):
reset
# Get Status
filename = './datafile.dat'
stats filename u 2 noout
# Get Angles & Percentages
ANG(x)=x*360.0/STATS_sum
PER(x)=x*100.0/STATS_sum
# Y position of key point and label
YLBL(row) = 2.0 * (row - 0.5*(STATS_records - 1))/(STATS_records - 1)
# Square Canvas
set size square
set xrange [-1:1.5]
set yrange [-1.25:1.25]
set style fill solid 1
# Remove Base Properties (Titles, Tics, Axis, Palette)
unset key
unset tics
unset border
unset colorbox
# Palette
set palette defined (1 1 0.788 0.055, 2 0.090 0.161 0.659)
# Plot
A = 0.0
plot filename u (0):(0):(1):(A):(A=A+ANG($2)):0 with circle linecolor palette,\
A = 0,\
filename u (M=A+ANG($2), A=2*M-A, M=M*pi/360.0, 0.5*cos(M)):(0.5*sin(M)):(PER($2) > 8.0 ? sprintf('%.1f\%', PER($2)) : "" ) w labels center,\
filename u (1.3):(YLBL($0)):1 with labels offset char 3 left ,\
filename u (1.3):(YLBL($0)):0 pt 5 ps 4 lc palette
Сценарий содержит некоторые другие улучшения:
- Вам не нужно перебирать
STATS_records
- Текст и точка для ключа нанесены на одну и ту же позицию, метка смещается с параметром
offset
на три символьных единицы (offset char 3
).Это упрощает настройку.