Ограничение диапазона на логарифмическом графике в 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]
,