嵌套轴:多个具有不同刻度的连接轴

嵌套轴:多个具有不同刻度的连接轴

我正在尝试将所谓的“点图”转换为乳胶。这些图在生物学中用于比较序列。每个轴代表一个序列,点的坐标是实际的 X 和 Y 位置,类似于没有标记的图。

虽然整体情节相当简单,但我再次在轴上遇到困难。一个轴(X 或 Y)由几个连接的轴组成,例如 X 轴包含三个序列,总长度为 N,其中每个子序列的长度各不相同。我想要的是绘制 X 轴上每个子序列(从 0 到结束)的轴。或者更简单:如何在一个长 X 轴上绘制几个小 X 轴。

-----更新:
我发现我的 MWE 造成了一些混乱。我附上了一张我想使用 pgfplots 重现的示例图片。X 轴是一个单一序列,而 Y 轴有两个子序列:一个在右侧 Y 轴上表示,一个在左侧 Y 轴上表示。两者都以 0 开头并覆盖每个子序列的长度。第一个序列在第二个序列开始的地方结束。

正如杰克指出的那样,嵌套循环应该可以添加次要刻度。此外,MWE 中只有前两个子序列(共 17 个)。我不得不说,MWE 不是我在附图中显示的数据,但它应该表明我的问题
X 轴上有一个子序列、Y 轴上有两个子序列的点图 ---\更新

我计算了每个子序列相应的开始和长度:

       start   length
Seq0   0.00     47.81
Seq1   47.82    59.93
Seq2   107.76   49.29
Seq3   157.06   52.94

我尝试了嵌套循环。外层循环用于每个子序列的开头,内层循环用于绘制刻度:

  \foreach \start/\len  in {0/47.81, 47.82/59.93, 107.76/49.29} % subsequences
     \foreach \j  in {0,100,...,\len} %% the minor ticks of the subsequences

但是,我没能用这个构造替换刻度,无论是将其放入x coord trafo/.code还是直接绘制。pgfmanual 提到了不同类型的 foreach 循环,例如\pgfplotsforeachungrouped,但我不明白如何使用它们来绘制自制轴。

我尝试了如下方法图中的图:放大图,使放大的部分被带有刻度和刻度标签的轴框住。这是迄今为止最有希望的方法,但我无法让子序列的两个轴并排并正确缩放。我怀疑这与我之前的问题类似堆叠条形图上的两个不同比例,但我不明白。

数学家协会

\documentclass[11pt, a4paper]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usepgflibrary{fpu}
\usepackage[margin = 1cm]{geometry}
\begin{document}
\begin{figure}
  \begin{tikzpicture}
   [rotate = -90]%% the origin (0/0) of the original plot and pgfplots differ
        %%-----------
        %%plotting dots
        %%-----------
   \begin{axis}[
   enlargelimits = false,
   only marks,
   width = \linewidth,
   hide x axis,
   hide y axis,
   ]    
   \addplot 
coordinates {
(704 , 704)%% lower right corner
(704 , 698)
(704 , 691)
(704 , 47)
(703 , 703)
(703 , 698)
(702 , 702)
(702 , 655)
(702 , 337)
(702 , 53)
(702 , 52)
%% more coordinates here. removed for simplicity
(11 , 11)
(10 , 10)
(9 , 9)
(8 , 8)
(7 , 7)
(6 , 6)
(5 , 5)
(4 , 4)
(3 , 3)
(2 , 2)
(1 , 1)
(1 , 0)
(0 , 0)%%upper left corner
};
\end{axis}
\node[anchor = east] at (0,0){\begin{axis}[%%<-- First subsequence
               xmin = 0, xmax = 47.81,
               ymin = 0, ymax = 1,
               scale only axis,
               hide y axis,
               axis x line* = bottom,
               enlargelimits = false,
               ]
  \end{axis}};
  \node[anchor = east] at (47.82,0){\begin{axis}[%%<-- Second subsequence
               xmin = 0, xmax = 59.93,
               ymin = 0, ymax = 1,
               scale only axis,
               hide y axis,
               axis x line* = bottom,
               enlargelimits = false,
               ]
  \end{axis}};

  \end{tikzpicture}
 \end{figure}
\end{document} 

相关内容