2013-04-08 3 views
1

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

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 

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

+0

«Это не работает» - Что не работает? Gnuplot дает вам ошибку? Если так, то, что это? – mgilson

+0

Значит, я не получаю соответствие между указанным диапазоном. Например, х варьируется от [30000: 50000]. Когда я выполняю скрипт, я получаю сообщение об ошибке как {Прочитано 9999 пунктов Пропущено 9999 точек вне диапазона [x = 30000: 50000] Нет данных для установки} – Vijay

ответ

1

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

И не забывайте:logscale использует логарифм, основанный на 10, но log(x) или log($1) означает logaritm, основанный на «е» (около 2,7183.). Чтобы быть гармоничным с использованием функции logscalelog10(x) (или log(x)/log(10)).

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

2

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