2015-09-18 2 views
-1

Возможно ли иметь конфигурацию на граф в мультимножении?Gnuplot - Multiplot - Конфигурация на граф

set yrange [0:100]; set key; 
plot "comparison.txt" using 1:3 title "Process: CPU time" lt rgb "red" with boxes; unset y2label; unset key; unset ytics 
plot "" using 1:17 title "Process: CPU time" lt rgb "orange" with boxes; 
plot "" using 1:31 title "Process: CPU time" lt rgb "green" with boxes; set y2label "Process CPU time, %"; 

Я хочу только один первый граф в моем ряду, чтобы иметь ключ, и только последний ключ в моем ряду, чтобы иметь y2label. Есть ли способ установить это значение только для отдельного графика в мультимножении?

Upd: вот монстр сценарий, который я закончил с:

clear 
reset 

cd "C:/tests" 

ymultiplier=250 
countMetrics=9 

set grid 
unset xtics 
#----------STYLES 
set tmargin 6 
set rmargin 3 
set style fill solid 
set style data lines 
set style fill transparent solid 0.50 noborder 
do for [i=1:10] { 
    set style line i linewidth 5 
} 
set datafile separator comma 
#--------------- 

set output './foursome.png' 
set terminal png truecolor nocrop enhanced font arial 12 size 1600,ymultiplier*countMetrics 

set multiplot layout countMetrics,4 rowsfirst 

set yrange [0:100]; unset key; set lmargin 6; set tmargin 2.5; 
plot "normal.txt" using 1:3 title "Process: CPU time" lt rgb "red" with boxes; unset y2label; unset key; set lmargin 0; set format y ""; 
plot "" using 1:17 title "Process: CPU time" lt rgb "orange" with boxes; 
plot "" using 1:31 title "Process: CPU time" lt rgb "dark-green" with boxes; set y2label "Process CPU time, %"; 
plot "" using 1:3 lt rgb "red" with boxes, "" using 1:17 lt rgb "orange" with boxes, "" using 1:31 lt rgb "dark-green" with boxes 

set yrange [200:600]; unset y2label; set ytics; set lmargin 6; set format y; set tmargin; unset title; 
plot "" using 1:($4/1e6) title "Process: Private Bytes" lt rgb "red"; unset key; set lmargin 0; set format y ""; 
plot "" using 1:($18/1e6) title "Process: Private Bytes" lt rgb "orange"; 
plot "" using 1:($32/1e6) title "Process: Private Bytes" lt rgb "dark-green"; set y2label "Process: Private Bytes, MB"; 
plot "" using 1:($4/1e6) lt rgb "red", "" using 1:($18/1e6) lt rgb "orange", "" using 1:($32/1e6) lt rgb "dark-green"; 

set yrange [200:600]; unset y2label; set ytics; set lmargin 6; set format y; 
plot "" using 1:($8/1e6) title "Process: Working Set" lt rgb "red"; unset key; set lmargin 0; set format y ""; 
plot "" using 1:($22/1e6) title "Process: Working Set" lt rgb "orange"; 
plot "" using 1:($36/1e6) title "Process: Working Set" lt rgb "dark-green"; set y2label "Process: Memory usage, MB"; 
plot "" using 1:($8/1e6) lt rgb "red", "" using 1:($22/1e6) lt rgb "orange", "" using 1:($36/1e6) lt rgb "dark-green"; 

set yrange [-50:1100]; set ytics; unset y2label; set lmargin 6; set format y; 
plot "" using 1:9 title "Java heap Usage" with boxes lt rgb "red"; set lmargin 0; set format y ""; 
plot "" using 1:23 title "Java heap Usage" with boxes lt rgb "orange" 
plot "" using 1:37 title "Java heap Usage" with boxes lt rgb "dark-green"; set y2label "Java heap Usage"; 
plot "" using 1:9 with boxes lt rgb "red", "" using 1:23 with boxes lt rgb "orange", "" using 1:37 with boxes lt rgb "dark-green"; 

unset y2label; set ytics; set yrange [0:150]; set lmargin 6; set format y; 
plot "" using 1:($10/1e6) title "Java heap Max" lt rgb "red"; set lmargin 0; set format y ""; 
plot "" using 1:($24/1e6) title "Java heap Max" lt rgb "orange"; 
plot "" using 1:($38/1e6) title "Java heap Max" lt rgb "dark-green"; set y2label "Java heap Max, MB"; 
plot "" using 1:($10/1e6) lt rgb "red", "" using 1:($24/1e6) lt rgb "orange", "" using 1:($38/1e6) lt rgb "dark-green" 

set yrange [0:300]; unset y2label; set ytics; unset key; set lmargin 6; set format y; 
plot "" using 1:12 title "Garbage Collection Time" lt rgb "red"; set lmargin 0; set format y ""; 
plot "" using 1:26 title "Garbage Collection Time" lt rgb "orange" 
plot "" using 1:40 title "Garbage Collection Time" lt rgb "dark-green"; set y2label "Collection Time, S"; 
plot "" using 1:12 lt rgb "red" , "" using 1:26 lt rgb "orange", "" using 1:40 lt rgb "dark-green" 


set yrange [0:3000]; unset key; set ytics; unset y2label; set lmargin 6; set format y; 
plot "" using 1:13 title "MarkSweepCompact CollectionCount" lt rgb "red"; set lmargin 0; set format y ""; 
plot "" using 1:27 title "MarkSweepCompact CollectionCount" lt rgb "orange" 
plot "" using 1:41 title "MarkSweepCompact CollectionCount" lt rgb "dark-green"; set y2label "Mark Sweep Compact Collection Count"; 
plot "" using 1:13 lt rgb "red", "" using 1:27 lt rgb "orange", "" using 1:41 lt rgb "dark-green" 

set yrange[85:110] 
set ytics; unset y2label; set lmargin 6; set format y; 
plot "" using 1:7 title "Process: Handle count" lt rgb "red"; set lmargin 0; set format y ""; 
plot "" using 1:21 title "Process: Handle count" lt rgb "orange" 
plot "" using 1:35 title "Process: Handle count" lt rgb "dark-green"; set y2label "Process: Handle count"; 
plot "" using 1:7 lt rgb "red", "" using 1:21 lt rgb "orange", "" using 1:35 lt rgb "dark-green" 

set yrange[200:600]; set ytics; unset y2label; set lmargin 6; set format y; 
plot "" using 1:($8/1e6) title "Process: Thread count" lt rgb "red"; set lmargin 0; set format y ""; 
plot "" using 1:($22/1e6) title "Process: Thread count" lt rgb "orange" 
plot "" using 1:($36/1e6) title "Process: Thread count" lt rgb "dark-green"; set y2label "Process: Thread count, 10x6"; 
plot "" using 1:($8/1e6) lt rgb "red", "" using 1:($22/1e6) lt rgb "orange", "" using 1:($36/1e6) lt rgb "dark-green" 

unset multiplot 

set output './dummy.dat' 
#JMX - start from 10-16 
+0

Что ваш текущий результат, и что именно вы хотите? Пожалуйста, будьте более конкретными. И, пожалуйста, дайте полный, но минимальный рабочий пример (используя, например, sin (x) и cos (x) вместо данных, которых у нас нет). Да, вы должны перемещаться с помощью соответствующих команд 'set' и' unset' после вашего первого и перед вашим последним сюжетом. – Christoph

+0

Я хочу построить график для мультипликации 9x4. Мне нужны заголовки только для верхних сюжетов, xticks только для левых сюжетов, xtitle только для правильных графиков. Я не нашел способ сделать это с чудовищным графиком. – saikek

ответ

1

Да, вы можете. Если вы set что-то достаточно вы unset после (или другой набор параметров):

set multiplot layout 3,1 
    # Here the 1st plot 
    set yrange [0:100] 
    set key 
     plot sin(x) t "plot 1" 
    # Here the 2st plot 
    unset key 
    set xlabel "X of the second plot " 
     plot cos(x) t "plot 2" 
    # Here the 3rd plot 
    # unset key # is not needed 
    set xlabel "X of the last plot " 
    set y2label "Process CPU time, %"; # better before if you want it acts 
    plot cos(1.5*x) t "plot 3" 

unset multiplot 
+0

Я нашел его дорогим - поскольку каждый граф строк и столбцов имеет разные значения: первая строка должна иметь заголовки, первая колонка - должна иметь xtics последняя колонка - значения x. Также мне хотелось, чтобы расстояние между столбцами было уже, кроме первого самого левого – saikek

+1

@saikek Да, это действительно довольно дорого, особенно для большого графика. Но это путь. Может быть, вы найдете мой ответ http://stackoverflow.com/a/23936306/2604213 полезной информацией о том, как лучше расположить графики на сетке. – Christoph

+1

:-) Конечно, это _expensive_: вы делаете 36 сюжетов и 54 кривых. вы ожидали, что это бесплатно? :-) Если ссылка @Christoph не достаточно, вы можете думать немного по-другому: помните, что ___gnuplot_ умеет «вызывать» скрипты и передавать переменные этому скрипту__. Таким образом, вы можете определить некоторые linestyles, создать свой подзаголовок с одним блоком из 4 графиков. В главном скрипте между 'set' и' unset multiplot' вы можете «вызывать» 9 раз суб-скрипт с необходимыми переменными (значение для yrange, margin, strings для заголовка кривой и y2range ...). Кстати, это совершенно другой вопрос. – Hastur

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