I'm trying to convert a so called "dotplot" into latex. These plots are used in biology to compare sequences. Each axis represents a sequence and the coordinates of a dot are the actual X and Y position, similar to a plot without markers.
While the overall plot is quite easy, I'm struggling, again, with the axes. One axis (either X or Y) consist of several concatenated axes, e.g. the X-axis harbours three sequences which have a total length of N whereby the length of each subsequence varies. What I want is to plot the axis for each subsequence (from 0 - end) on the X axis. Or simpler: How can I plot several small X-axes on one long X-Axis.
-----UPDATE:
I saw that my MWE created some confusion. I attached a picture of an example I'd like to reproduce using pgfplots. The X-axis is one sole sequence while the Y-axis has two subsequences: one is indicated on the right and one on the left Y-axis. Both start with 0 and cover the length for each subsequence. The first sequence stops where the second begins.
As Jake pointed out, the nested loop should add the possibility to add the minor ticks. Also, there are only the first two subsequences in the MWE (out of 17).
I have to mention that the MWE is not the data I show in the attached picture but it should indicate my problem
---\UPDATE
I calculated the corresponding start and length for each subsequence:
start length
Seq0 0.00 47.81
Seq1 47.82 59.93
Seq2 107.76 49.29
Seq3 157.06 52.94
I tried nested loops. The outer for the beginning of each subsequence and the inner to plot the ticks:
\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
However, I did not succeed in replacing the ticks with this construct, either by placing it into x coord trafo/.code or drawing directly.
The pgfmanual mentions different kinds of foreach loops, e.g. \pgfplotsforeachungrouped, but I do not understand how I can use them to plot self-made axis.
I tried the approach as described in plot within a plot: zoom into a plot so that the magnified part is framed by axis with ticks and tick labels. This is the most promising approach until now, but I cannot get the two axis for the subsequences side -by-side and properly scaled. I have the suspicion it's something similar to my previous question Two different scales on stacked barplot, but I cannot figure it out.
The MWE
\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}
\foreachsnippet seems to suggest that you want tick marks placed 100 units apart, but all the subsequences are less than 100 units long. Maybe you could include an image of what you want the plot to look like? – Jake Jun 14 '12 at 22:01@usernamenotation to notify others of your comments. – masu Oct 23 '13 at 12:05