我需要在实线中绘制一系列区间(和点)集。区间可以是封闭的、左/右开放的或开放的。(开放/封闭的末端用空心/实心圆圈标记)孤立点只是点。区间组可能具有共同的样式和共同的图例。下面您可以看到一个模拟图。
我可以通过以下代码了解基础知识
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[title = {Number line}, axis y line=none, y=0.5cm/3, restrict y to domain=0:20, axis lines=left]
\addplot+[only marks] coordinates {( 3.14, 0 )( 10, 0 )};
\addplot+[only marks] coordinates {( 20, 0 ) ( 21, 0 )};
\end{axis}
\end{tikzpicture}
\end{document}
但很难进一步研究,因为我找不到方法来改变点的样式(例如从实心圆变为空心圆)coordinates
和/或打破单个坐标集来绘制两个不相交的区间和具有相同样式的点(如下图中的蓝色集)。
我发现的替代方法是在环境tikz
draw
中使用axis
\draw[green, -|] (axis cs:5,0)--(axis cs:6,0); % something like "(-]" or "*-o" (if they worked) may be better
但在设置轴边界时会忽略这些点(我需要自动设置)。此外,我需要使用 pgfplots 来保持与其他(正常)图的一致性(就点、线和轴的样式而言)。
答案1
如果使用table
而不是coordinates
,则空行会告诉 pgfplots 不要连接点。要更改标记样式,可以使用 选项scatter/classes
。请注意,这将为每个散点图类创建一个图例条目,因此在这种情况下,您应该只定义一个。
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
title = {Number line},
axis y line=none,
y=0.5cm/3,
restrict y to domain=0:1,
axis lines=left,
enlarge x limits=upper,
scatter/classes={
o={mark=*,fill=white}
},
scatter,
scatter src=explicit symbolic,
every axis plot post/.style={mark=*,thick},
legend style={
draw=none,
at={(1,1)},
anchor=south east
},
legend image post style={mark=none}
]
\addplot table [y expr=0,meta index=1, header=false] {
3.14 c
10 o
13 c
15 c
17 c
};\addlegendentry{Set 1}
\addplot table [y expr=0,meta index=1, header=false] {
20 c
21 c
};\addlegendentry{Set 2}
\end{axis}
\end{tikzpicture}
\end{document}