我得到了什么:
我需要的:
所需操作:
y axis
零定位- 锚定
node near coords
在蓝线右侧
我使用的代码是:
\begin{filecontents*}{RR.dat}
y x Label
2 116.6 MT600
3 -17.43 SC600
4 17.6 TC700
\end{filecontents*}
\begin{tikzpicture}
\begin{axis}[
axis lines*=left,
yticklabels from table={RR.dat}{Label},
ytick=data,
nodes near coords={\thenumber{}},
nodes near coords align={horizontal},
visualization depends on={value \thisrow{x} \as \thenumber},
]
\addplot+[xcomb] table [x=x, y=y] {RR.dat};
\end{axis}
\end{tikzpicture}
谢谢!! :)
答案1
添加一个新列,用于移动坐标附近的节点,因为这些节点必须非均匀移动。我对
shift
列进行了此操作并相应地添加了值。然后添加以下几行:visualization depends on={value \thisrow{shift}\as\myshift}, every node near coord/.append style={xshift=\myshift},
使用
axis y line*=middle,
以便在 处绘制 y 轴x=0
。使用 将 y 刻度标签向左移动
yticklabel style={xshift=-8mm},
。
代码:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{filecontents}
\begin{filecontents*}{RR.dat}
y x Label shift
2 116.6 MT600 0
3 -17.43 SC600 8mm
4 17.6 TC700 0
\end{filecontents*}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis y line*=middle,
yticklabels from table={RR.dat}{Label},
ytick=data,
yticklabel style={xshift=-8mm},
nodes near coords={\thenumber{}},
nodes near coords align={horizontal},
visualization depends on={value \thisrow{shift}\as\myshift},
every node near coord/.append style={xshift=\myshift},
visualization depends on={value \thisrow{x} \as \thenumber},
]
\addplot+[xcomb,mark=square*] table [x=x, y=y] {RR.dat};
\end{axis}
\end{tikzpicture}
\end{document}