Ограничение диапазона на логарифмическом графике в gnuplot

Я пытаюсь подогнать сюжет в gnuplot, используя logscale. У меня 50000 точек данных. Сначала я подхожу к сюжету таким образом.

 f(x) = b + m*x
 fit f(x) "xyMSD-all-mal-cel-iso-bcm-thermo2.dat" using 1:2  via m,b

Я получил значение наклона. Затем я попытался получить значение наклона в другом диапазоне, как показано ниже.

 fit [30000:50000] f(x) "xyMSD-all-mal-cel-iso-bcm-thermo2.dat" using 1:2  via m,b

Приведенный выше код работает нормально. В следующей попытке я попытался,

 f(x) = b + m*x
 fit f(x) "xyMSD-all-mal-cel-iso-bcm-thermo2.dat" using (log($1)):(log($2)) via m,b

Выше работает тоже хорошо. Я получаю значение наклона. Затем я попытался выбрать Xrange, как показано ниже. Вот где у меня проблема. Это не работает.

 fit [500:5000] f(x) "xyMSD-all-mal-cel-iso-bcm-thermo2.dat" using (log($1)):(log($2)) via m,b

Есть ли способ добиться этого? Цени любую помощь

2 ответа

Решение

Gnuplot сначала использует выражение для ваших данных. Ограничение диапазона является вторым шагом, поэтому в этом случае логарифм требуемых точек данных должен быть в xrange,

И не забывайте: logscale использует логарифм на основе 10, но log(x) или же log($1) означает логарифм, основанный на "е" (прибл. 2.7183). Быть гармоничным с logscale использовать функцию log10(x) (или же log(x)/log(10)).

PS: я знаю, что на первоначальный вопрос уже был дан ответ, но мне не хватает престижа, чтобы добавить свой полезный комментарий о log()функционировать как комментарий.

Диапазон должен соответствовать выражению, которое в вашем случае является логарифмическими значениями. Поэтому убедитесь, что значения журнала находятся в пределах диапазона. Например, если ваш диапазон для ($1):($2) является [500:5000], то соответствующий диапазон для (log($1)):(log($2)) должно быть что-то вроде [2.69:3.69],

Другие вопросы по тегам