2017-01-14 1 views
1

Я использую как ytics, так и y2tics, так как мои диапазоны данных сильно отличаются. Используя обе оси, все данные пропорционально представлены. См. Этот образец изображения: sample imagegnuplot: установить ключ на левой или правой стороне, на основе какой оси он наносится на

В данных «кластеров», «хозяев» и «vsan» используется y2axis, а остальное использует yaxis. Как переместить клавиши в верхнюю левую или верхнюю правую сторону (графика) на основе оси, на которой они нарисованы?

Вот выдержка из моего кода:

set y2tics 
set ytics nomirror 
plot "data" using 1:2 title "Clusters" linecolor rgb "black" axes x1y2, \ 
     '' using 1:3 title "Hosts" linecolor rgb "blue" axes x1y2,\ 
     '' using 1:4 title "vSAN" linecolor rgb "cyan" axes x1y2,\ 
    '' using 1:5 title "VMs" linecolor rgb "purple" axes x1y1,\ 
     '' using 1:6 title "⚫" linecolor rgb "green" axes x1y1,\ 
     '' using 1:7 title "⚪" linecolor rgb "red" axes x1y1 

Вот некоторые тестовый образец данных:

2016-12-18 22 131 0 1179 1024 155 
2016-12-19 22 131 0 1179 1025 154 
2016-12-20 22 131 0 1178 1025 153 
2016-12-21 22 129 0 1180 1026 154 
2016-12-22 22 132 0 1182 1014 168 
2016-12-23 22 133 0 1182 1016 166 
2016-12-24 22 133 0 1187 1016 171 
2016-12-25 22 133 0 1187 1016 171 
2016-12-26 22 133 0 1187 1016 171 
2016-12-27 22 133 0 1187 1016 171 
2016-12-28 22 133 0 1189 1017 172 
2016-12-29 22 133 0 1189 1018 171 
2016-12-30 22 133 0 1189 1018 171 
2017-01-01 22 133 0 1189 1018 171 
2017-01-02 22 133 0 1189 1018 171 
2017-01-03 22 133 0 1185 1020 165 
2017-01-04 22 133 0 1183 1018 165 
2017-01-05 22 133 0 1183 1017 166 
2017-01-06 22 133 0 1174 1018 156 
2017-01-07 22 133 0 1173 1018 155 
2017-01-08 22 133 0 1173 1018 155 
2017-01-09 22 133 0 1175 1011 164 
2017-01-10 22 131 0 1170 1004 166 
2017-01-11 22 131 0 1170 1004 166 
2017-01-13 22 131 0 1162 998 164 

Обновленный образец изображения на основе ответа Maij в:

enter image description here

+0

Великой информации. Не могли бы вы показать код, обозначающий ось X таким образом? – SDsolar

ответ

0

Если на «либо слева или справа от» вы имеете в виду, что стороны области графика, то вы можете использовать multiplot среду. Мы должны вручную корректировать поля, и мы должны следить за тем, чтобы y-тики не были напечатаны с другой стороны.

set samples 1000 
set xrange [0:2*pi] 

# The plots must overlap, so we set the margins manually. 
# We have to play with the numbers, the depend on the terminal. 
set lmargin at screen 0.25 
set rmargin at screen 0.75 

set key outside 

set terminal pngcairo size 800,400 
set output "two_keys.png" 

set multiplot 

    # no ytics on the right side for the first plot 
    set ytics nomirror 
    set key left 
    plot sin(x) lt 2, \ 
     cos(x) lt 3 

    # no ytics on the left side for the second plot 
    unset ytics 
    set y2tics 
    set y2range [-10:10] 

    set key right 
    plot tan(x) axis x1y2 lt 4 

unset multiplot 

Это результат с Gnuplot 4.6: plot with two legends

+0

Спасибо. Это работает. Внешняя легенда занимает слишком много места. Есть ли способ зарезервировать какую-то комнату «внутри» и сжать там легенды? Я попытался изменить yrange, но это, похоже, не соответствует графикам (или строки не соответствуют номерам y). – zagpoint

+0

@zagpoint 1) Вы можете уменьшить пробел между клавишей и графиком, указав положение клавиши явно с помощью клавиши «set» на экране , '. 2) Установка 'yrange' для резервирования места внутри участка должна работать. Может потребоваться установить «yrange» и «y2range» для обоих, первого и второго сюжетов, даже если используется только один из них. 3) Если данные позволяют это, я бы явно установил 'yrange',' y2range', 'ytics',' y2tics', чтобы количество тиков по обеим сторонам графика было равным. Тогда ygrid выглядит лучше. – maij

0

Если по «левой или правой стороне» вы подразумеваете стороны самой легенды то вы можете создать легенду из двух столбцов. Поскольку у вас есть шесть кривых, установите параметр maxrows в 3, так что у вас будет 3 строки и 2 столбца.

set term pngcairo size 1024,700 
set output 'key.png' 
set key right outside maxrows 3 
set y2tics 
set ytics nomirror 
plot sin(x) t '1' axes x1y2,\ 
2*sin(x) t '2' axes x1y2,\ 
3*sin(x) t '3' axes x1y2,\ 
4*sin(x) t '4' axes x1y1,\ 
5*sin(x) t '5' axes x1y1,\ 
6*sin(x) t '6' axes x1y1 

enter image description here

+0

Я действительно хотел сказать левую/правую сторону области графика .... Я отредактировал op, чтобы отразить это. Спасибо ... – zagpoint

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