请教一个用Latex作图的问题,我现在初学Latex画图功能,想用Latex的语句画一个马鞍面,但是我不想要马鞍面上的网格纹理,只想要马鞍面的边界和马鞍面与XZ平面与YZ平面的交线。前一个图我是设samples=10画出来的,但是我不想要网格,于是改为samples=3,但是画出来的结果变成了后一个图那样。有没有办法得到一个马鞍面的图其曲线如前图但是横纵的纹理只各保留三条?下面贴一下我的语句:
\documentclass[boder=5pt]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{tikz-3dplot}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=center,
ticks=none,
enlargelimits=false,
xmin=-12, xmax=12, ymin=-12, ymax=12, zmin=-50, zmax=50,
xlabel=$x$, ylabel=$y$, zlabel=$z$,
every axis x label/.style={
at={(axis cs:12,0,0)},
anchor=west,
},
every axis y label/.style={
at={(axis cs:0,12,0)},
anchor=west,
},
every axis z label/.style={
at={(axis cs:0,0,50)},
anchor=south,
}]
\addplot3 [mesh,black,samples=10] {x^2-y^2};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[axis lines=center,
ticks=none,
enlargelimits=false,
xmin=-12, xmax=12, ymin=-12, ymax=12, zmin=-50, zmax=50,
xlabel=$x$, ylabel=$y$, zlabel=$z$,
every axis x label/.style={
at={(axis cs:12,0,0)},
anchor=west,
},
every axis y label/.style={
at={(axis cs:0,12,0)},
anchor=west,
},
every axis z label/.style={
at={(axis cs:0,0,50)},
anchor=south,
}]
\addplot3 [mesh,black,samples=3] {x^2-y^2};
\end{axis}\\
\end{tikzpicture}
\end{document}
看了pgfplots宏包,感觉没有类似的,如果非要实现的话,也不是不行,去掉网线就会影响立体感!下面是一种组合形式的办法!若有大神更准确的绘制,请补充!
\documentclass[boder=5pt]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{tikz-3dplot}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=center,view={70}{60},
ticks=none,
enlargelimits=false,
xmin=-3, xmax=6, ymin=-3, ymax=6, zmin=-80, zmax=100,
xlabel=$x$, ylabel=$y$, zlabel=$z$,
every axis x label/.style={
at={(axis cs:6,0,0)},
anchor=west,
},
every axis y label/.style={
at={(axis cs:0,6,0)},
anchor=west,
},
every axis z label/.style={
at={(axis cs:0,0,100)},
anchor=south,
}]
\addplot3 [
surf,%white,
faceted color=%
%white,
orange,
samples=50,
domain=
0:4,
y domain=%0:4
0:4
] {x^2 - y^2};
\addplot3 [
surf,white,
faceted color=red,
samples=40,
domain=4:4.01,y domain=0:4
] {x^2 - y^2};
\addplot3 [
surf,white,
faceted color=red,
samples=20,
domain=0:4,y domain=4:4.01
] {x^2 - y^2};
\addplot3 [
surf,white,
faceted color=red,
samples=40,
domain=0:0.01,y domain=0:4
] {x^2 - y^2};
\addplot3[domain=0:4,samples y=0,red]{x^2};
\addplot3[domain=0:4,samples y=0,red]{x^2};
\end{axis}
\end{tikzpicture}
\end{document}
我试了几个效果:
可以参考一下这个:Is it possible to remove the mesh but keep the outline of this pgf plot?,适当调整一下参数看能不能符合需求。
个人建议,可以考虑使用其它工具绘制,再用TikZ进行标注,这样可确保字体、字号等与正文的一致性。
一个可能的参数:
\begin{axis}[%
domain=-1:1, y domain=-1:1,
axis lines=center,
ticks=none,
enlargelimits=false,
xmin=-1, xmax=1, ymin=-1, ymax=1, zmin=-2, zmax=2,
xlabel=$x$, ylabel=$y$, zlabel=$z$,
every axis x label/.style={
at={(axis cs:1,0,0)},
anchor=west,
},
every axis y label/.style={
at={(axis cs:0,1,0)},
anchor=west,
},
every axis z label/.style={
at={(axis cs:0,0,2)},
anchor=south,
},
colormap={blueblack}{color=(black) color=(white)}]
\addplot3[point meta={1-ifthenelse(abs(x)==1,1,ifthenelse(abs(y)==1,1,0))},
z buffer=sort,
surf,opacity=0,
samples=30,fill opacity=0.5] {x^2-y^2};
\end{axis}
\end{tikzpicture}
其结果为:
感谢两位的回答,我按照巴拿赫空间的思路研究了一下最后这样画了:
\documentclass[boder=5pt]{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{tikz-3dplot}
\begin{document}
\begin{tikzpicture}[>=stealth]
\begin{axis}[scale=1.5,line width=0.5pt,axis lines=center,
ticks=none,
enlargelimits=false,
xmin=-3, xmax=3, ymin=-3, ymax=3, zmin=-3, zmax=3,
xlabel=$x$, ylabel=$y$, zlabel=$z$,
every axis x label/.style={
at={(axis cs:3,0,0)},
anchor=west,
},
every axis y label/.style={
at={(axis cs:0,3,0)},
anchor=west,
},
every axis z label/.style={
at={(axis cs:0,0,3)},
anchor=south,
}]
\addplot3 [black,domain=-1:1,samples=20,samples y=0]({x},-1,{x^2-1});
\addplot3 [black,domain=-1:1,samples=20,samples y=0]({x},0,{x^2});
\addplot3 [black,domain=-1:1,samples=20,samples y=0]({x},1,{x^2-1});
\addplot3 [black,domain=-1:1,samples=20,samples y=0](-1,{x},{1-x^2});
\addplot3 [black,domain=-1:1,samples=20,samples y=0](0,{x},{-x^2});
\addplot3 [black,domain=-1:1,samples=20,samples y=0](1,{x},{1-x^2});
\addplot3 [black,domain=-1:1,samples=20,samples y=0]({x},{-1/2},{x^2-1/4});
\addplot3 [black,domain=-1:1,samples=20,samples y=0]({x},{1/2},{x^2-1/4});
\addplot3 [black,domain=-1:1,samples=20,samples y=0]({-1/2},{x},{1/4-x^2});
\addplot3 [black,domain=-1:1,samples=20,samples y=0]({1/2},{x},{1/4-x^2});
\end{axis}
\end{tikzpicture}
\end{document}
效果还成。
寄存器的画法也很优秀,不过有个小问题是这样画出来的马鞍面和我画的其他的圆锥曲面之类风格差异有点大,放在一起会有点违和,但还是要感谢提供新知识!
已采纳
画6条线就可以满足题主的要求,例如
\addplot3 [black,samples y=0](x,-5,{x^2-(-5)^2});
,不过缺少立体感。