2016-12-26 8 views
1

У меня есть матрица данных, которая является выходом автоматической программы транскрипции музыки. Я хочу построить его с помощью gnuplot, назначив соответствующие метки. Here's my dropbox with some data, где Intensity.dat это фактические данные, example.stn столбец строковых значений, некоторые из которых должны быть отображены на оси у и example.all только результат paste example.stn Intensity.dat > example.all сценария:Как уменьшить/уменьшить количество тиковых меток в матрице gnuplot

reset 
set title "Intensity detection" 
set palette negative grayscale 
set cbrange [0.01:1] 
set xlabel "Time [s]" 
set ylabel "Musical note" 
set terminal qt font "Verdana,16" 
set logscale cb 
xincr=0.04644 
yincr=1 
plot 'example.all' u (($1+0.5)*xincr):($2*yincr):3 matrix with image 

производит plot produced by script 1. Хорошо, теперь просто тиков этикетки Всё ...

После того как я изменить последнюю строку plot 'example.all' u (($1+0.5)*xincr):($2*yincr):3 matrix rowheaders with image, ось у становится слишком densly заселена (Это plot2.jpg от моего Dropbox, ссылка на верхнем. К сожалению, ребята, я 'm new, и это не позволяет мне размещать более двух ссылок). То, что я хочу, - это способ представить только те ярлыки, которые я хочу (или скрыть другие, что угодно), не все за раз (потому что он выглядит нечитаемым). Я также хотел бы иметь возможность быстро изменить их на остальных, когда мне это нужно. Предположительно, я хочу отображать каждый 12-й ярлык, но все равно сохраняю всю матрицу со всеми строками. Или каждый 12-й, начиная со 2-го лейбла И каждые 12-е, начиная с 6-го. Я уже много раз пробовал, но я застрял. Такие функции, как: ytics() или: yticlabels() не могут сделать это, по крайней мере для меня. И да, мне нужна эта Verdana 16, и удаление ярлыков полностью не может быть и речи.

Я буду благодарен, если метод применяется также для оси X, так как у меня есть аналогичная проблема с осью X в другом сюжете, но я вообще ценю любую помощь.

ответ

0

Вы можете отделить черчения изображения от построения ytics, как это:

condition(n) = (ceil(n)%12-2 == 0) || (ceil(n)%12-6 == 0) 

plot 'Intensity.dat' u (($1+0.5)*xincr):($2*yincr):3 matrix with image ,\ 
    'example.stn' u (NaN):0:ytic(condition($0) ? strcol(1) : "") notitle 

Функции condition проверяет, является ли метка должна быть построена или нет. Я использовал ceil для преобразования из реального числа в целое число, которое требуется оператору modulo (%). Функция condition вызывается с номером linenumber $0. Значение NaN при построении «example.stn» позволяет избежать наложения точек данных, сохраняя при этом возможность установки меток. Если условие выполнено (12-я метка, начиная с 2-го или 12-го, начиная с 6-го), мы используем фактическую метку, иначе используется пустая строка.

note intensities

+0

Прежде всего, спасибо за быстрый ответ, я верю, что это решение. Для тех, кто ищет маркировку по оси x, это 'condition (n) = (ceil (n)% 12-2 == 0) || (ceil (n)% 12-6 == 0) ' и черновая часть ' plot 'example.dat' u (($ 1) * xincr): ($ 2 * yincr): 3 матрица с изображением, \ 'пример .stn 'u 0: (NaN): xtic (условие ($ 0)? strcol (1): "") notitle' – LDTV

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

  • Нет связанных вопросов^_^