如何绘制PCR循环图?

如何绘制PCR循环图?

我想绘制如下图所示的图表,但是我很难开始。

PCR 示例

竖线的高度代表温度,斜线的斜率是固定的,竖线上方的数字为温度,下方的数字为时间。

是否可以将绘图包装到这样的单个函数中?

\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}

在此处输入图片描述

相关内容