在图上绘制虚线

在图上绘制虚线

我正在尝试使用两个函数在绘图上绘制垂直和水平虚线,但显然我无法获得工作所需的代码。我需要线条位于n = 2和的位置f(n) = 2。有人可以告诉我怎么做吗?

\documentclass[11pt,a4paper,oneside]{article}
\usepackage{fullpage}
\usepackage[italian]{babel}
\usepackage[utf8]{inputenc}
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{color}
\usepackage{pgfplots}
\usetikzlibrary{positioning}
\usepackage[font={footnotesize,it},width=.5\textwidth]{caption}
\pgfplotsset{compat=1.12}

\begin{document}

\begin{figure}[hb]
\centering
\begin{tikzpicture}
\begin{axis}[domain=0:5, samples=50,grid=major, 
legend style={legend cell align=left, font=\tiny},
restrict y to domain=0:5,xlabel=$\text{Dimensione dell'input}$,
ylabel=$\text{Tempo di esecuzione}$, 
legend pos=north west]
\addplot [color=red]    {x};
\addplot [color=green]  {e^x-5/2*x};

\legend{$n$, $e^n-\frac{5}{2}n$}
\end{axis}
\end{tikzpicture}
\caption{In figura $f(n) = n$ e $g(n) = e^n-\frac{5}{2}n$.}
\label{gif:asymsup}
\end{figure}

\end{document}

答案1

要绘制虚线,请执行以下操作

\draw [dotted] (x1,y1) -- (x2,y2);

对于垂直线,x坐标均为2。您可以手动添加合适的 y 坐标,或者自动获取轴范围,对\pgfkeysvalueof{/pgfplots/ymin}和 进行类似的操作ymax

对于水平线,利用坐标中允许计算的事实,因此您可以e^2-5/2*2直接将其用于 y 坐标。x 值的获取方式与上述相同。

因此,类似

\draw [very thick,dotted] (2,\pgfkeysvalueof{/pgfplots/ymin}) -- (2,\pgfkeysvalueof{/pgfplots/ymax});
\draw [very thick,dotted] (\pgfkeysvalueof{/pgfplots/xmin},e^2-5/2*2) -- (\pgfkeysvalueof{/pgfplots/xmax},e^2-5/2*2);

需要注意两点:

  1. 在环境里添加上述命令axis
  2. 正如您所见,\pgfplotsset{compat=1.12}轴坐标被用作\draw和 内部类似事物的默认值axis。如果您的设置compat低于 1.11,或者根本没有设置,则必须使用(axis cs:x,y)来指定应使用轴坐标系。

在此处输入图片描述

\documentclass[margin=5pt]{standalone}
\usepackage{pgfplots,amsmath}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}[domain=0:5, samples=50,grid=major, 
legend style={legend cell align=left, font=\tiny},
restrict y to domain=0:5,xlabel=$\text{Dimensione dell'input}$,
ylabel=$\text{Tempo di esecuzione}$, legend pos=north west]
\addplot [color=red]    {x};
\addplot [color=green]  {e^x-5/2*x};

\legend{$n$, $e^n-\frac{5}{2}n$}


\draw [very thick,dotted] (2,\pgfkeysvalueof{/pgfplots/ymin}) -- (2,\pgfkeysvalueof{/pgfplots/ymax});
\draw [very thick,dotted] (\pgfkeysvalueof{/pgfplots/xmin},e^2-5/2*2) -- (\pgfkeysvalueof{/pgfplots/xmax},e^2-5/2*2);
\end{axis}
\end{tikzpicture}
\end{document}

相关内容