我正在尝试旋转一个简单的高斯,但是当我尝试旋转图形时,很明显只是pgfplots
裁剪图形以匹配指定的边界:
上图显示了两个图形,一个是蓝色的,没有旋转。该图形具有正确的边界,x 介于 0 和 5 之间。
另一个橙色图表被旋转了。旋转后图表被裁剪了。我希望反转这个顺序,这样我就可以获得蓝色图表的形状,像橙色图表一样旋转。
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfmathdeclarefunction{gauss}{2}{%
\pgfmathparse{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))}%
}
\begin{document}
\begin{tikzpicture}[xscale=1,>=latex,
declare function={
normal(\m,\s)=1/(2*\s*sqrt(pi))*exp(-(x-\m)^2/(2*\s^2));
}
]
\begin{axis}[
axis lines=none,
samples=30,
xmin=0,xmax=5,
domain=-5:5,
area plot/.style={
fill opacity=0.75,
draw=none,
fill=orange,
mark=none,
smooth
}
]
\addplot [area plot,rotate=25,yshift=-50,xshift=50] {normal(0,1)};
\addplot [area plot] {normal(0,1)};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
tikzpicture 仍然是 tikzpicture。因此您可以对其应用转换。
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfmathdeclarefunction{gauss}{2}{%
\pgfmathparse{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))}%
}
\begin{document}
\begin{tikzpicture}[>=latex,rotate around={50:(0,0)},% <-- Here
declare function={normal(\m,\s)=1/(2*\s*sqrt(pi))*exp(-(x-\m)^2/(2*\s^2));}
]
\begin{axis}[
axis lines=none,
samples=30,
xmin=0,xmax=5,
domain=-5:5,
area plot/.style={
fill opacity=0.75,
draw=none,
fill=orange,
mark=none,
smooth
}
]
\addplot [area plot] {normal(0,1)};
\end{axis}
\end{tikzpicture}
\end{document}
答案2
TiKZ's plot
我不知道坐标之间的关系,pgfplots
所以结果不一样。但你不需要使用pgfplots
来绘制像你的例子那样的东西,只需一个fill
就plot
足够了,不用担心裁剪区域。
\documentclass[border=3mm,tikz]{standalone}
\begin{document}
\begin{tikzpicture}[declare function={%
gauss(\x)=1/(sqrt(2*pi))*exp(-(\x)^2/2);},]
\fill[color=orange, fill opacity=.75] (0,0) --plot[ domain=0:5] (\x,{gauss(\x)}) -- cycle;
\fill[color=blue, fill opacity=.75,yshift=5mm, xshift=5mm, rotate=25 ] (0,0) -- plot[ domain=0:5] (\x,{gauss(\x)}) -- cycle;
\fill[color=red, fill opacity=.75,yshift=5, xshift=5mm, rotate=50] (0,0) -- plot[ domain=0:5] (\x,{gauss(\x)}) -- cycle;
\end{tikzpicture}
\end{document}
答案3
一种不切实际的方法是将 嵌入到tikzpicture
中rotatebox
,然后使 tikzpicture 成为另一个 内的节点tikzpicture
:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfmathdeclarefunction{gauss}{2}{%
\pgfmathparse{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))}%
}
\begin{document}
\begin{tikzpicture}
\node at (0,0){\rotatebox{45}{\begin{tikzpicture}[xscale=1,>=latex,
declare function={
normal(\m,\s)=1/(2*\s*sqrt(pi))*exp(-(x-\m)^2/(2*\s^2));
}
]
\begin{axis}[
axis lines=none,
samples=30,
xmin=0,xmax=5,
domain=-5:5,
area plot/.style={
fill opacity=0.75,
draw=none,
fill=orange,
mark=none,
smooth
}
]
%\addplot [area plot,rotate=25,yshift=-50,xshift=50] {normal(0,1)};
\addplot [area plot,fill=blue] {normal(0,1)};
\end{axis}
\end{tikzpicture}}};
\end{tikzpicture}
\end{document}