Может кто-нибудь более подробно рассказать о функциях set nonlinear
и set link
. Документация слишком краткая по этим темам. В частности, для set link
, почему необходимо прописать обратное преобразование? (это просто потому, что у gnuplot нет возможности определить обратное преобразование или есть более глубокая причина?) Что если в качестве обратного я предоставлю совершенно другую функцию (не являясь обратной)?
например. Я бы предположил, что в следующем примере, по крайней мере, один график будет линией, но это не так, чтобы создать линию, нужно построить третью команду
set xrange [0:5]
set link x2 via x**2 inverse sqrt(x)
plot x**2 axes x2y1
plot x**2 axes x1y1
plot sqrt(x) axes x2y1
Это возвращает меня к вопросу, какова цель инверсии в спецификации ссылок.
Теперь вернемся к set nonlinear
, документация гласит: «Координаты вдоль видимой оси отображаются путем применения g (x) к координатам скрытой оси. F (x) отображает координаты видимой оси обратно на скрытую линейную ось». Я не понимаю, что такое скрытая ось и что такое линейная ось. Пример set nonlinear x via log10(x) inverse 10**x
имеет смысл для меня, но не в контексте терминов, используемых в документации (я понимаю преобразование, но я не знаю, какую роль здесь играет скрытая ось, также нет необходимости в обратном в такой преобразование).
Самый интересный пример - это тот, у которого ломаная ось:
f(x) = (x <= 100) ? x : (x < 500) ? NaN : x-390
g(x) = (x <= 100) ? x : x+390
set xrange [0:1000] noextend
set nonlinear x via f(x) inverse g(x)
set xtics add (100,500)
plot sample [x=1:100] x, [x=500:1000] x
Но я его совсем не понимаю (я понимаю определение функции, но не в контексте функции nonlinear
). Возможно, было бы наиболее полезно объяснить в этом примере set nonlinear
и номенклатуру скрытых осей.
Реакция на ответ:
Допустим, сначала я хочу построить функцию f(x)
. Пусть v(x)
будет отображением от линейной оси до видимой: v:L->V
и l(x)
будут инверсией, то есть l:V->L
(L
, вероятно, должно соответствовать xrange
в gnuplot). Из ответа я не понял, как рассчитывается f(x)
. Если f(x): X->R
(это отображение из некоторого подмножества вещественных чисел в действительные числа), откуда X
происходит из-под этих сопоставлений. Обычно (без связей или нелинейных осей) (и считается, что L=V
, v
и l
являются картами тождеств), ось Y
будет содержать числа {y=f(x)
, так что x
находится в V
}.
Это становится немного запутанным в нелинейном случае, другими словами, x
приходят из L
или V
пространства, или x
в y = f(x)
из набора чисел уже преобразованная ось X
, которая в действительности будет f(v(x))
, где x
взяты из набора xrange
в gnuplot (или пробел L
), или это действительно f(x)
, где x
от L
или это f(l(x))
, где x
снова взяты из преобразованной оси X
, которая на самом деле снова f(l(v(x)))
x
из пространства L
или xrange
? Кроме того, это будет отличие от set link
, которое действительно не может повлиять на способ вычисления f(x)
.
(Интересно, что при построении данных ситуация, вероятно, должна быть больше похожа на set link
, поскольку нет функции для преобразования.)