我感兴趣的是绘制两个变量的最小值和最大值,即min(x,y)
或max(x,y)
。到目前为止,我所采用的方法是使用 gnuplot 获取轮廓图,但我的尝试没有成功。
图表显示效果不佳,我不太清楚原因是什么。以下是我文章末尾的代码生成的结果:
不幸的是,这与实际函数相差甚远。最大值应为正方形,最小值为两条正交线,如下图所示。
如果可以的话,您能否通过调整我的代码来帮助我重现这些功能?
先感谢您。
\documentclass[11pt,a4paper]{article}
\usepackage{fullpage}
\usepackage{graphicx}
\usepackage{indentfirst}
\usepackage{pgfplots}
\usepackage{tikz}
\usepackage[miktex]{gnuplottex}
\pgfplotsset{compat=1.12}
\usepackage{amsmath}
\usepackage{natbib}
\usepackage{amssymb}
\usepackage{xcolor}
\usepackage{hyperref}
\hypersetup{
colorlinks,
linkcolor={red!50!black},
citecolor={black!50!black},
urlcolor={blue!80!black}
\begin{document}
\begin{tikzpicture}[scale=0.8]
\begin{axis}[
axis lines=left,
view={0}{90},
xlabel=$P_1$,
ylabel=$P_2$,
xmin=0,xmax=1,
ymin=0,ymax=1,
]
\addplot3[
contour gnuplot={levels={0.02}}
]
{min(x,y)};
\end{axis}
\end{tikzpicture}\begin{tikzpicture}[scale=0.8]
\begin{axis}[
axis lines=left,
view={0}{90},
xlabel=$P_1$,
ylabel=$P_2$,
xmin=0,xmax=1,
ymin=0,ymax=1,
]
\addplot3[
contour gnuplot={levels={0.2}}
]
{max(x,y)};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
将domain
和添加samples
到\addplot3
选项中。
\documentclass[11pt,a4paper]{article}
\usepackage{pgfplots}
\usepackage[miktex]{gnuplottex}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}[scale=0.8]
\begin{axis}[
axis lines=left,
view={0}{90},
xlabel=$P_1$,
ylabel=$P_2$,
xmin=-0.2,xmax=1,
ymin=-0.2,ymax=1,
]
\addplot3[
domain=-0.2:1,samples=100,contour gnuplot={levels={0.02}}
]
{min(x,y)};
\end{axis}
\end{tikzpicture}\begin{tikzpicture}[scale=0.8]
\begin{axis}[
axis lines=left,
view={0}{90},
xlabel=$P_1$,
ylabel=$P_2$,
xmin=0,xmax=1,
ymin=0,ymax=1,
clip=false
]
\addplot3[
domain=0:1,samples=100,contour gnuplot={levels={0.9}}
]
{max(x,y)};
\end{axis}
\end{tikzpicture}
\end{document}