第二个图中缺少符号坐标的刻度标签

第二个图中缺少符号坐标的刻度标签

我试图在同一个轴环境中绘制两个图。两个图都使用符号 X 坐标(和符号 Y 坐标),但第一个图中未出现的 X 值将不会出现在最后一个图的 X 轴标签中,即仅出现在第二个图中的 X 坐标将不会获得 X 刻度标签。

我怎样才能使这些标签显示在所有符号 X 坐标上?使用xticklabels似乎没有起到作用。

缺少 x 刻度标签渲染
b2并且c2也应该出现在 X 轴上。

\documentclass{standalone}

\usepackage{filecontents}
\usepackage{pgfplots, pgfplotstable}

\pgfplotsset{compat=1.9}
\begin{filecontents}{dataI.csv}
xitem,yitem,val
a1,X,0.1
a2,Y,0.5% adding this will make the a2 label appear, but I don't want this value. And using `nan` will be plotted as 0.
a1,Z,0.3
b1,Y,0.5
b1,Z,0.6
c1,X,0.8
\end{filecontents}
\begin{filecontents}{dataII.csv}
xitem,yitem,val
a2,X,0.1
b2,Y,0.5
b2,Z,0.6
c2,Y,0.8
c2,Y,0.7
\end{filecontents}

\pgfplotstableread[col sep=comma]{dataI.csv}\datatableI
\pgfplotstableread[col sep=comma]{dataII.csv}\datatableII

\begin{document}

\begin{tikzpicture}
\begin{axis}[
    xtick=data, ytick=data, unbounded coords=jump,
    symbolic x coords={a1,a2,b1,b2,c1,c2}, symbolic y coords={X,Y,Z},
    xticklabels={a1,a2,b1,b2,c1,c2},% has no effect
    y dir=reverse, axis line style={draw=none}, tick style=transparent,
    y tick label style={inner sep=0, font=\tiny,},
    x tick label style={inner sep=0, font=\tiny, rotate=90, anchor=east,},
    enlarge x limits={abs=1mm}, enlarge y limits={abs=1mm},
    x=2mm, y=2mm,
]
\addplot[
    mark=square*, mark size=1mm, only marks, scatter, mark options={outer sep=0}, scatter/use mapped color={fill=mapped color,draw opacity=0},
    point meta=explicit,
] table [col sep=comma, x=xitem, y=yitem, meta expr=\thisrow{val},]{\datatableI};
\addplot[ mark=diamond*, mark size=1mm, only marks, scatter, mark options={outer sep=0}, scatter/use mapped color={fill=mapped color,draw opacity=0},
    point meta=explicit,
] table [col sep=comma, x=xitem, y=yitem, meta expr=\thisrow{val},
] {\datatableII};
\end{axis}
\end{tikzpicture}
\end{document}

答案1

xtick=data仅使用第一个\addplot命令来确定刻度位置。您可以使用以下命令获得所需结果xtick={a1,a2,b1,b2,c1,c2}

相关内容