為什麼 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
,因為這些點是計算過...只是沒有使用。
這些過濾器鍵與最小和最大鍵不同,因為它們實際上忽略了過濾掉的值,而不是簡單地將它們從圖片中刪除。如果這些值大於 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)
,所以你的地塊將相當空置。 未繪製的點甚至不用於錨定插值曲線! 所以過濾鍵並不是萬能的。
我的照片傾向於設置全部這些鍵的不同之處,因為它們各自對繪圖的影響不同。