У меня есть данные в следующем формате:
10.0 1 a 2
10.2 2 b 2
10.4 3 a 2
10.6 4 b 2
10.8 4 c 10
11.0 4 c 20
... где третий столбец в основном указывает на принадлежность к «отдельному» набору данных; и поэтому я хотел бы показать, скажем, те образцы, которые принадлежат букве «а», красным цветом, образцы, принадлежащие букве «б», синим цветом и т. д. (используя gnuplot
версия 4.4, уровень исправления 2).
Мне удалось как-то получить образец стиля как смесь стилей impulses
и point
; и через Выбор типа линии и цвета в Gnuplot 4.0 , удалось использовать отдельные цвета - вот как далеко я продвинулся ( basictest.gnuplot ):
#!/usr/bin/env gnuplot
print "Generating data..."
# to specify data inline in script:
# only system can work, as it is quoted;
# but still have to escape newlines!
system "cat > ./inline.dat <<EOF\n\
10.0 1 a 2\n\
10.2 2 b 2\n\
10.4 3 a 2\n\
10.6 4 b 2\n\
10.8 4 c 10\n\
11.0 4 c 20\n\
EOF\n"
print "done generating."
# set ranges
set yrange [0:30]
set xrange [0:4]
# define line styles - can call them up later
set style line 1 linetype 1 linewidth 3 pointtype 3 linecolor rgb "red"
set style line 2 linetype 1 linewidth 2 pointtype 3 linecolor rgb "green"
set style line 3 linetype 1 linewidth 2 pointtype 3 linecolor rgb "blue"
# offset the X axis: instead of 1:2, use: ($1-10):2
# to "mix", use "" for last datset - but must also repeat the "using"!
# ... and plot:
plot 'inline.dat' using ($1-10):2 with impulses linestyle 1,\
"" using ($1-10):2 notitle with points linestyle 1,\
"" using ($1-10):2 notitle with lines linestyle 2,\
'inline.dat' using ($1-10):4 with impulses linestyle 3,\
"" using ($1-10):4 notitle with points linestyle 3
# below just for saving file
#set terminal png
#set output 'basictest.png'
#replot
... который выглядит так:
Другими словами, вместо вышеупомянутого - скажем, за (1-10 $): 2, я хотел бы видеть 1 st и 3 rd sample ('a ') синим цветом, 2 и и 4 th сэмплом (' b ') красным, а последние два (' c ') зеленым ( Я оставил зеленый линия, чтобы увидеть эффект смешения стилей ).
Я знаю, что этого можно достичь, написав скрипт, который будет анализировать исходные данные и генерировать из них три таблицы, например:
10.0 1 a 2
10.4 3 a 2
---
10.2 2 b 2
10.6 4 b 2
---
10.8 4 c 10
11.0 4 c 20
... который затем можно было бы построить «отдельно» - но я бродил, если бы gnuplot
, возможно, имел какую-то внутреннюю возможность для чего-то подобного?
Заранее спасибо за любые ответы,
Ура!
PS: Несколько полезных ссылок для меня:
РЕДАКТИРОВАТЬ: просто хотел опубликовать ссылку на скрипт , с помощью которого я приближаюсь к визуализации данных так, как я хотел:
Я хочу обработать метки (с добавленными «точками» в качестве фона прямоугольника) как узлов в graphviz или в TikZ , и установить эти хорошие линии связи между ними - но даже это уже очень мне помогает :) Обратите внимание, что это вывод wxt
- другие терминалы, такие как png
или pdfcairo
, будут иметь полностью испорченный рендеринг коробок / меток ( и нужно будет настраивать вручную).