Tengo el siguiente documento, donde extra x ticks
se definen manualmente. Sin embargo, quiero generar los ticks a partir del archivo CSV donde la segunda columna es 1 porque los conjuntos de datos reales son mucho más grandes que este ejemplo. Intenté algo from table
pero no logré que funcionara. ¿Es posible en absoluto? Alternativamente, un marcador en la posición correcta de los datos sería una solución aceptable.
\documentclass[]{article}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{filecontents}{data.csv}
value,isChange
-1.18349,1
1.29675,0
3.33266,0
3.22086,0
2.29151,0
2.46577,0
2.41649,0
2.11641,0
2.46207,0
2.41293,0
2.10606,1
4.77804,0
6.199,0
4.7366,0
3.56816,0
4.38747,0
4.15053,0
4.04366,0
4.27493,0
4.2202,0
4.67526,1
\end{filecontents}
\begin{document}
\begin{figure}[H]
\begin{tikzpicture}
\begin{axis}[
width=1\textwidth,height=0.4\textheight,
extra x ticks = {0, 10, 20},
extra tick style={grid=major, major grid style={red,thick}},
]
\addplot[] table[x expr=\coordindex, y index=0,col sep=comma] {data.csv};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
Esto da como resultado la siguiente imagen.
Respuesta1
Aquí hay una sugerencia usando la marca |
de la plotmarks
biblioteca:
\documentclass[]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\usetikzlibrary{plotmarks}
\begin{filecontents}{data.csv}
value,isChange
-1.18349,1
1.29675,0
3.33266,0
3.22086,0
2.29151,0
2.46577,0
2.41649,0
2.11641,0
2.46207,0
2.41293,0
2.10606,1
4.77804,0
6.199,0
4.7366,0
3.56816,0
4.38747,0
4.15053,0
4.04366,0
4.27493,0
4.2202,0
4.67526,1
\end{filecontents}
\begin{document}
\begin{figure}[htb]
\begin{tikzpicture}
\begin{axis}[
width=1\textwidth,height=0.4\textheight,
set layers,mark layer=like plot,% markers clipped
clip mode=individual
]
\addplot[
only marks,mark=|,
mark options={red,thick,mark size=\pgfkeysvalueof{/pgfplots/height}}
]table[
x expr=\coordindex,y index=0,col sep=comma,
restrict expr to domain={\thisrow{isChange}}{1:1}
]{data.csv};
\addplot[] table[x expr=\coordindex,y index=0,col sep=comma] {data.csv};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}