Почему pgfplots строит графики функций только до x = 5 и y = 5, но не дальше?
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
%%%<
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\setlength\PreviewBorder{5pt}
%%%>
\begin{document}
\begin{tikzpicture}
\begin{axis}[samples=100,ymin=0,ymax=10,xmin=0,xmax=20]
\addplot [thick] plot (\x, {1/(1 + exp(-0.6*(\x - 12)))});
\addplot plot (\x, {\x});
\end{axis}
\end{tikzpicture}
\end{document}
решение1
В pgfplots
. Тот, о котором вы спрашиваете, просто domain
, который указывает, какие значения x
(вам не нужна обратная косая черта, если вы используете pgfplots
) используются при построении графика; по умолчанию у нас есть , что автор, по-видимому, считает разумным для типичных графиков. Для функций с двумя переменными domain = -5:5
есть соответствующий .y domain
Этот домен сильно отличается от ограничений, установленных xmin
и xmax
. В то время как domain
устанавливается для каждого участка, эти ключи устанавливаются для каждой оси и просто ограничивают фактическоерисунокк этим пределам. Существуют соответствующие ymin
и ymax
. Они будут вычислены автоматически, pgfplots
если они не заданы, но для действительно отполированной картины необходимо задать их самостоятельно. Обратите внимание, что y domain
делаетнетне имеют ничего общего с ymin
и ymax
в графике функций с одной переменной, поскольку он определяет входные данные несуществующей переменной y
. Вместо этого ymin
и ymax
, если бы они были определены автоматически, вычислялись бы из значений, выводимых вашими построенными функциями по domain
.
Есть еще! Мои любимые — restrict x to domain
и restrict y to domain
, которые являются фильтрами с тем же синтаксисом ввода, что и domain
. Они не определяют, какие числа используются в переменных; они определяют, какие значения используются в графике. Они чрезвычайно полезны с параметрическими или неконтролируемыми функциями; то есть \addplot {1/x};
, при значении по умолчанию domain = -5:5
, будет создавать довольно отвратительную асимптоту при , x = 0
а также (при значении по умолчанию ymin
и ymax
) сильно искаженный вид осей. Но настройка restrict y to domain = -5:5
на этом графике просто устранит большие значения, удалив асимптоту, а также масштабируя изображение обратно до пропорционального квадрата.
Или, в качестве альтернативы, параметрический график, такой как \addplot ({exp(x)},{exp(-x)});
(забавный способ нарисовать то же самое только в первом квадранте), который трудно настроить напрямую из-за логарифмической связи между значениями на графике и значениями переменной. Для этого как значения по умолчанию, так и domain
размеры осей по умолчанию не подходят; я обычно оставляю domain
все как есть (что дает слишком большие числа в обеих координатах), а затем устанавливаю restrict x to domain
и restrict y to domain
соответственно, чтобы красиво обрезать картинку. Это не значит, что это хорошая идея бытьполностьюне обращая внимания на domain
, так как эти точкиявляютсявычисляется...просто не используется.
Эти ключи фильтра отличаются от ключей min и max, поскольку они фактически игнорируют отфильтрованные значения, а не просто вырезают их из картины. Это важно, если эти значения больше, чем TeX способен обработать.
Наконец, есть samples
или sample at
, причем последний существует взаимоисключающе с domain
и сказать, сколько, или дажеточнопри каких значениях x
вычислять значения. Это может быть альтернативой ключам restrict to domain
, если вы тщательно выбираете образцы, чтобы избежать исключительных входных данных. Они также полезны для настройки графика вокруг быстро меняющихся мест в графике, который в противном случае выглядел бы довольно прерывистым. Они также взаимодействуют с ключами restrict to domain
в том смысле, что, скажем,
\addplot[
domain = -5:5,
samples = 11,
restrict x to domain = -1:1,
restrict y to domain = -1:1
] ({exp(x)},{exp(-x)});
будет оценено ровно 11 точек, а именно ({exp(-5)},{exp(5)})
через ({exp(5)},{exp(-5)})
, но будут нанесены на график только те, у которых обе координаты находятся в интервале [-1,1]
. К сожалению, единственная точка с таким свойством — ({exp(0)},{exp(0)}) = (1,1)
, поэтому ваш график будет довольно пустым. Неотмеченные точки даже не используются для привязки интерполяционных кривых! Так что фильтрующие ключи — не панацея.
Мои картины имеют тенденцию застыватьвсеиз этих клавиш, поскольку каждая из них по-разному влияет на рисунок.