我正在尝试使用两个函数在绘图上绘制垂直和水平虚线,但显然我无法获得工作所需的代码。我需要线条位于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);
需要注意两点:
- 在环境里添加上述命令
axis
。 - 正如您所见,
\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}