我正在绘制一个函数 K=f(x,y),并想通过在满足 x=y 或 x=2y 的表面上绘制线条来强调我的陈述。我尝试使用 (if ? then: else),但不知道如何传递 else。我想有一个简单的解决方案,但毕竟我是新手,仍然对 pgf 有一些问题。谢谢你的帮助!
梅威瑟:
\documentclass[11pt,oneside,a4paper]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{backgrounds}
\pgfplotsset{width=7.5cm,compat=newest}
\begin{document}
\begin{tikzpicture}
[show background rectangle,tight background,
declare function={
Kd(\qb,\qd,\koa) = {{\qd==\qb ? (\koa /((\koa / \qb )+1)) : (\qb *((exp(\koa /\qb *(1-(\qb /\qd)))-1) / (exp(\koa /\qb*(1-(\qb /\qd)))-(\qb /\qd)) ) )}};
},
]
\begin{axis}[
width=0.45\textwidth,
height=6.5cm,
% title={$k=f(KoA, QB, QD)$},
xlabel=$QB$, ylabel=$QD$, zlabel=$K$,
xtick={200, 300,400, 500},
ytick={ 500,1000,1500},
zlabel style={yshift=-0.25cm},
xlabel style={yshift=0.25cm},
ylabel style={yshift=.25cm},
x dir=reverse,
grid=major,
%minor tick num=4,
]
\addplot3[
surf,
domain=500:200,
domain y=200:1500
]
{ Kd(x,y,1000) };
\end{axis}
\end{tikzpicture}
\end{document}
答案1
欢迎!只需添加一个参数图,例如
\addplot3[color=blue,domain=500:200,samples y=0] (x,x,{Kd(x,x,1000)});
完整示例:
\documentclass[11pt,oneside,a4paper]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{backgrounds}
\pgfplotsset{width=7.5cm,compat=newest}
\begin{document}
\begin{tikzpicture}[show background rectangle,tight background,
declare function={Kd(\qb,\qd,\koa)=((\qd==\qb ? (\koa /((\koa / \qb )+1)) :
(\qb *((exp(\koa /\qb*(1-(\qb /\qd)))-1) /
(exp(\koa /\qb*(1-(\qb /\qd)))-(\qb /\qd))))));}]
\begin{axis}[
width=0.45\textwidth,
height=6.5cm,
% title={$k=f(KoA, QB, QD)$},
xlabel=$QB$, ylabel=$QD$, zlabel=$K$,
xtick={200, 300,400, 500},
ytick={ 500,1000,1500},
zlabel style={yshift=-0.25cm},
xlabel style={yshift=0.25cm},
ylabel style={yshift=.25cm},
x dir=reverse,
grid=major,
%minor tick num=4,
]
\addplot3[
surf,
domain=500:200,
domain y=200:1500
]
{ Kd(x,y,1000) };
\addplot3[color=blue,domain=500:200,samples y=0] (x,x,{Kd(x,x,1000)});
\addplot3[color=red,domain=250:200,samples y=0] (2*x,x,{Kd(2*x,x,1000)});
\end{axis}
\end{tikzpicture}
\end{document}