我想绘制如下图所示的图表,但是我很难开始。
竖线的高度代表温度,斜线的斜率是固定的,竖线上方的数字为温度,下方的数字为时间。
是否可以将绘图包装到这样的单个函数中?
\drawPCR{[95.0,11:00]}{[94.0,1:00],[59.0,1:00],[72.0,1:00]}{[60.0,45:00],[4.0,∞]}
答案1
这是一个起点。该命令采用一个逗号分隔的温度、时间和附加参数列表。如果附加参数为 1,则在其前面绘制一条虚线。您建议的语法应该是可行的,xparse
但我对此了解不够多,无法实现它。
\documentclass[border=3.14mm,tikz]{standalone}
\begin{document}
\newcommand\drawPCR[1]{%
\foreach \X/\Y/\W [count=\Z] in {#1}
{\ifnum\Z=1
\draw
(0,0) -- ++({0.5*\X*1pt},{\X*1pt}) -- ++ (1cm,0) coordinate (last) node[midway,above]{\X}
node[midway,below]{\Y};
\xdef\Xlast{\X}
\else
\pgfmathsetmacro{\DeltaX}{\X-\Xlast}
\ifnum\W=1
\draw[dotted] ([xshift={0.25*abs(\DeltaX)*1pt}]last|- 0,0) --++(0,125pt);
\fi
\draw (last) -- ++({0.5*abs(\DeltaX)*1pt},{\DeltaX*1pt}) -- ++ (1cm,0) coordinate (last)
node[midway,above]{\X} node[midway,below]{\Y};
\xdef\Xlast{\X}
\fi
}
}
\begin{tikzpicture}[font=\sffamily\small]
\begin{scope}[thick]
\drawPCR{95.0/11:00/0,94.0/1:00/1,59.0/1:00/0,72.0/1:00/0,60.0/45:00/1,4.0/$\infty$/0}
\end{scope}
\end{tikzpicture}
\end{document}