如果 x=y 使用 tikz 在绘制的表面上绘制一条线

如果 x=y 使用 tikz 在绘制的表面上绘制一条线

我正在绘制一个函数 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}

在此处输入图片描述

相关内容