2014-10-31 2 views
1

Мой вопрос о том, как автоматизировать размещение меток на краю графика для точек данных, которые превышают диапазон графика. Это было бы сделано для точек, которые являются выбросами, которые, если они построены, искажают масштаб графика, так что график больше не полезен, но все же необходимо отметить.Gnuplot - установленная метка для точек, которые превышают диапазон данных

Например, предположим, что у меня есть файл данных под названием «mydata.dat», который выглядит следующим образом:

1 2 
3 3 
7 4 
8 6 
50 8 

Если я сюжет данных с использованием

set yrange [0:10] 
set xrange [0:10] 
plot 'mydata.dat' w lp pt 1 

тогда последний точка (50,8) не будет отображаться. Для того, чтобы признать, однако, что существует точка за пределами нарисованного диапазона, метка и точка будут размещены на крае (т.е. в 10,8) участка с использованием

set label "" at 10,8 point pt 1 
set label "50" at 9.75,8 right 

Есть ли способ автоматизировать этот процесс? Способ использования GNUplot для чтения всего файла данных и установки точек и меток на границе участка?

ответ

1

Чтобы построить всю точку, находящуюся за пределами указанного диапазона, вам понадобится вторая команда построения графика, используя стиль построения labels.

В заявлении using вы можете проверить, находится ли точка вне диапазона. Если вы поместите точку с соответствующей меткой, в противном случае вы пропустите точку (используя 1/0 в качестве значения):

set xrange [0:10] 
set yrange [0:10] 
set linetype 1 pt 7 
plot 'mydata.dat' w lp lt 1, \ 
    '' using ($1 > 10 ? 10 : 1/0):2:(sprintf('%d', $1)) with labels right offset -2,-0.25 point lt 1 notitle 

Здесь я проверяю только для й значения составляет больше заданного максимальный x- стоимость. Может быть, вам нужно адаптировать его для того, чтобы поймать и выбросы в направлении у или те меньше 0.

enter image description here

+0

работает как шарм, спасибо! –

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