Ответ 1
Чтобы нарисовать линии между точками, используйте
plot "test.dat" with lines
Чтобы сохранить маркеры точек и строки, используйте
plot "test.dat" with linespoints
Итак, ваш пример станет
set terminal svg
set output "test.svg"
plot "test.dat" with lines
Дополнительные советы:
Не рассматривайте каждый образец:
С большими файлами вы также можете сочтет полезным отображать только каждый n-й образец с "каждым n". Это заставит график намного быстрее генерировать, а также даст меньший (но менее подробный) файл svg.
например.
plot "test.dat" every 100 with lines
Игнорировать заголовок файла .dat:
Если в файле .dat, созданный sox, есть некоторые строки вводных метаданных, например
; Sample Rate 44100
; Channels 2
вы можете добавить следующее, чтобы gnuplot рассматривал эти строки и игнорировал их.
set datafile commentschars ";"
Это избавит вас от необходимости предварительно обрабатывать ваш .dat файл, чтобы удалить эти строки до того, как gnuplot захлопывает их.
Запланировать как левый, так и правый каналы стереозвука:
Если вы работаете со стерео файлом, вы, вероятно, захотите увидеть оба канала.
Мы можем использовать "множитель" для выкладки следующих двух графиков (слева и справа) один над другим на общей оси х, как это делают многие программы редактирования звука.
set multiplot layout 2,1
plot "test.dat" using 1:2 with lines
plot "" using 1:3 with lines
1: 2 и 1: 3 инструктируют gnuplot, какие столбцы файла dat использовать в качестве источников x и y. Я предполагаю, что ваш стереофонический .dat файл, созданный sox, выглядит как мой, со столбцами для - 1: время с начала первого образца - 2: нормализованное значение выборки левого канала - 3: нормализованное значение выборки правого канала
Пример фрагмента:
10.840113 0.20101929 0.17840576
10.840136 0.26062012 0.14831543
10.840159 0.23779297 0.13146973
Объединение: Здесь a script, который объединяет все вышеперечисленное. Если у вас нет файла стереоданных для этого, вы должны удалить график 1: 3 и настройку мультиплексора.
#!/usr/bin/env gnuplot
set datafile commentschars ";"
set terminal svg
set output "test.svg"
set multiplot layout 2,1
plot "test.dat" using 1:2 every 100 with lines
plot "" using 1:3 every 100 with lines
unset multiplot
приукрашивание
Наконец, я изменил представление script для презентации (заимствуя большую часть из превосходной книги "gnuplot in action" Филиппа К. Джантера):
#!/usr/bin/env gnuplot
set datafile commentschars ";"
set terminal svg
set output "test.svg"
set multiplot layout 2,1
set ylabel "sample value"
set bmargin 0
set format x ""
set ytics -0.8,0.2
set key bottom
plot "test.dat" using 1:2 every 100 with lines lc rgbcolor "#a0a0b0" title "left channel"
set xlabel "time (s)"
set bmargin
set tmargin 0
set format x "%g"
set ytics -1.0,0.2,0.8
set key top
plot "" using 1:3 every 100 with lines lc rgbcolor "#a0a0b0" title "right channel"
unset multiplot
Здесь пример вывода (хотя и png):
Как сделать .dat файл
Для тех, кто следует за домом, вы можете использовать sox для создания файла .dat из аудиофайла с помощью следующей команды:
sox input.wav output.dat
Предупреждение о большом файле: преобразование даже 10 секунд стереофонического звука на частоте 40 кГц приведет к выходному файлу 25 МБ.