我正在尝试创建一个图表,其中跳过了一些距离/数据,并且在轴上用一个小符号(小锯齿形或一些对角线)表示,如下面的示例图所示。
在 tikz 中重现此符号/样式的最佳方法是什么?(顺便问一下,是否有任何特定符号被视为标准符号,或者比其他符号更受青睐?)
我目前正在使用下面的代码生成图表的轴,并希望符号出现在 (-2,6) 点附近。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\draw[black,ultra thick] [-stealth] (-2,0) -- (-2,14);
\node[rotate=90,font=\Large,anchor=south] at (-2,7) {Energy};
\end{tikzpicture}
\end{figure}
\end{document}
答案1
给你很多自由的一种方法就是(部分)抑制轴的绘制,并在绘图后用装饰重新绘制它:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
separate axis lines,
x axis line style= { draw opacity=0 }]
\addplot[] {x^2};
%store coodinates
\path[-] (rel axis cs:0,0) coordinate(botstart)
--(rel axis cs:0.7,0)coordinate(interruptbotA)
(rel axis cs:0.87,0) coordinate(interruptbotB)
--(rel axis cs:1,0) coordinate(botstop);
\path[-] (rel axis cs:0,1) coordinate(topstart)
--(rel axis cs:0.7,1) coordinate(interrupttopA)
(rel axis cs:0.87,1) coordinate(interrupttopB)
--(rel axis cs:1,1) coordinate(topstop);
\end{axis}
%Draw the axis with a decoration:
\draw(botstart)-- (interruptbotA) decorate[decoration=zigzag]{--(interruptbotB)} -- (botstop);
\draw(topstart)-- (interrupttopA) decorate[decoration=zigzag]{--(interrupttopB)} -- (topstop);
\end{tikzpicture}
\end{document}
您也可以在轴环境内绘图,但可能必须禁用剪切。
答案2
我设法找到了一个简单但有效的解决方案,我想与大家分享一下。本质上,我只是用三条连续的线替换了原始代码中的单行,中间一行有锯齿形装饰。这会产生锯齿形符号,表示线/图形不连续。我不知道如何生成其他类型的符号,但由于这个解决方案可以完成工作,所以我并不关心。
对于任何试图根据自己的目的调整此方法的人来说,需要注意的重要一点是,segment length
中线的 需要等于其长度,长度由其起点和终点坐标决定。这确保锯齿形只有一个波长。
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\draw[black,ultra thick] (-2,0) -- (-2,5.5);
\draw[black,ultra thick,decorate,decoration={zigzag,segment length=3mm, amplitude=5pt}] (-2,5.5) -- (-2,5.8);
\draw[black,ultra thick] [-stealth] (-2,5.8) -- (-2,14);
\node[rotate=90,font=\Large,anchor=south] at (-2,7) {Energy};
\end{tikzpicture}
\end{figure}
\end{document}