将 y 轴和节点定位在坐标附近

将 y 轴和节点定位在坐标附近

我得到了什么:

在此处输入图片描述

我需要的:

在此处输入图片描述

所需操作:

  • 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

  1. 添加一个新列,用于移动坐标附近的节点,因为这些节点必须非均匀移动。我对shift列进行了此操作并相应地添加了值。然后添加以下几行:

    visualization depends on={value \thisrow{shift}\as\myshift},
    every node near coord/.append style={xshift=\myshift},
    
  2. 使用axis y line*=middle,以便在 处绘制 y 轴x=0

  3. 使用 将 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}

在此处输入图片描述

相关内容