将附近的节点坐标值更改为符号 y 值

将附近的节点坐标值更改为符号 y 值

我想用相应的 y 值标记水平条形图的每个条形。但是,我只能获得数字表示,而不能获得实际的符号值。

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}

  \begin{axis}[
    xbar,
      axis y line=center,
      axis x line=center,
      bar width=4pt,
      bar shift=0pt,  %% <-- added                                                                                                                                                                                                            
      y=4pt,
      visualization depends on={y \as \rawy},
      nodes near coords={\rawy},, nodes near coords align={horizontal}, nodes near coords style={font=\tiny},
      symbolic y coords={A,B,C,D,E,F},
      yticklabels=\empty,
    ]
      \addplot[fill=blue] coordinates { (-58,A) (-45,B) (-43,C) };

      \addplot[fill=red] coordinates {
        (19,D)
        (35,E)
        (65,F)
      };
    \end{axis}
\end{tikzpicture}
\end{document}

这是使用不同 y 刻度作为标签而不是预期的符号值的内部表示的结果。

在此处输入图片描述

答案1

编辑(1):

  • 如果我正确理解了您的问题,那么在坐标节点附近的节点中,应该有符号坐标。我说得对吗?

编辑(2):

  • 您尝试从行读取数据,但失败了,因为您的数据没有组织成表格(包含行和列)。
  • 通过在简单的表格中收集数据(而不是通过坐标来书写数据),解决方案非常简单。
  • 我认为使用表格是优点而不是缺点。我相信,自动生成表格比收集坐标更简单。
\documentclass[border=3.141592]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}

\begin{document}
    \begin{tikzpicture}
\begin{axis}[
    axis x line=left,
    axis y line=center,
    enlargelimits={lower, 0.2},
%
    xbar=11pt,
    bar shift=0pt,  
%
    xtick={-80,-60,...,60},
    ytick=\empty,
    y=11pt,
%
    symbolic y coords={A,B,C,D,E,F},
    point meta=explicit symbolic,
    nodes near coords,
    nodes near coords align={horizontal}, 
                ]
\addplot[fill=blue!70, 
         nodes near coords style={font=\small, anchor=east},
        ] table[meta=Y] {
                            X   Y
                          -58   A
                          -45   B
                          -43   C
                                };
\addplot[fill=red,
         nodes near coords style={font=\small, anchor=west},
        ] table[meta=Y]  {  
                            X   Y   
                            19  D 
                            35  E 
                            56  F 
                                };
\end{axis}
    \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容