Определяемое пользователем масштабирование в gnuplot для оси y (эквивалентно заданному logscale y) - PullRequest
4 голосов
/ 08 марта 2012

Я определил функцию f(), которую я хотел бы использовать для масштабирования, аналогично logscale (но f() не является логарифмической функцией).Есть ли способ просто сделать это автоматически, как set fscale y?

В противном случае я попытался построить масштабированную функцию:

plot 'data' using 1:(f($2))

, но тогда масштаб на оси y явно неправильный,Могу ли я использовать свою функцию для изменения масштаба оси y?

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

1 Ответ

6 голосов
/ 08 мая 2012

Если ваши данные не сильно отличаются, вы можете вставить тики полуавтоматически, добавив команду plot с помощью set ytics ({"<label>"} <pos> {<level>} {,{"<label>"}...)

Просто используйте соответствующее количество точек, чтобы сюжет был четким.

Пример:

$ cat ex.data 
0 0
1 3
2 2.2
5 5
7 1.2
9 4
12 9
15 5

, поэтому наши y-данные находятся в диапазоне от 0 до 9.

 $ gnuplot

         G N U P L O T
         Version 4.4 patchlevel 3
         last modified March 2011
         System: Linux 3.2.0-24-generic

         Copyright (C) 1986-1993, 1998, 2004, 2007-2010
         Thomas Williams, Colin Kelley and many others

         gnuplot home:     http://www.gnuplot.info
         faq, bugs, etc:   type "help seeking-assistance"
         immediate help:   type "help"
         plot window:      hit 'h'

 Terminal type set to 'wxt'
 gnuplot> f(x) = x**2
 gnuplot> set yrange [0:f(10)]
 gnuplot> set ytics ("0" f(0), "5" f(5), "7.5" f(7.5), "10" f(10))
 gnuplot> plot "ex.data" u 1:(f($2)) w l

Результат:

example plot

...