将图中的条形图替换为每个 Y 变量的文本

将图中的条形图替换为每个 Y 变量的文本

我有一个最初是条形图的图形。我用中间的文本替换了值。我希望文本在每个 Y 值处在图形内左对齐。

在此处输入图片描述

由于某种原因,中间还出现了一条线。我试图删除 xbar,但情况变得更糟。有人有什么建议吗?谢谢。

\documentclass{article}
\usepackage{pgfplots}
\usepackage{caption}
\usepackage{tikz}
\usepackage{biblatex}
\addbibresource{biblatex-examples.bib}

\begin{document}

\begin{figure}[h] 
\caption{Peer comparison between SBP and SARD}
\label{Figure.Top8AMDpeers.SBPvsSARD}
\centering 
\captionsetup[subfigure]{justification=centering}
    \caption{Top 8 AMD peers by SBP} \label{fig:M1} 
    \begin{tikzpicture} 
\begin{axis}
[
width=6.5cm, height=10cm, y dir = reverse,
symbolic y coords={first, second, third, forth, fifth, sixth, seventh, eight},
point meta=explicit symbolic,
ytick=data,
xmajorticks=false,
nodes near coords, nodes near coords align={horizontal \pgfplotspointmeta}]
nodes near coords={\pgfmathprintnumber{\DataX} \pgfplotspointmeta},
\addplot[xbar,fill={rgb:red,0;green,47;blue,135}] coordinates 
{
(0,first) [peer 1]
(0,second) [peer 2]
(0,third) [peer3]
(0,forth) [peer 4]
(0,fifth) [peer 5]
(0,sixth) [peer 6]
(0,seventh) [peer 7]
(0,eight) [peer 8]
}; 
\end{axis} 
\end{tikzpicture}
\end{figure}
\end{document}

答案1

像这样?

在此处输入图片描述

您在中间看到的线实际上是它xbar本身。所有条的长度为零,因此最终会得到零宽度矩形的轮廓,即一条线。您可以添加draw=none\addplot选项中以将其删除,但最好只使用\addplot[]

接下来,使用nodes near coords align=right,而不是nodes near coords align={horizontal \pgfplotspointmeta}。对齐不应以任何方式依赖于元值(在您的情况下为“对等点 1”、“对等点 2”等)。使用 设置right,您最终会将这些节点放置在相应 x 坐标末尾的右侧。并且由于所有 x 坐标均为零,这意味着节点放置在 x = 0 的右侧。因此,要将它们移动到轴的左侧,请使用 设置轴的 x 限制xmin=0,xmax=1

\documentclass{article}
\usepackage{pgfplots}
\usepackage{caption}

\begin{document}

\begin{figure}
\centering 
\captionsetup[subfigure]{justification=centering}
    \caption{Top 8 AMD peers by SBP} \label{fig:M1} 

\begin{tikzpicture} 
\begin{axis}
[
width=6.5cm, height=10cm, y dir = reverse,
symbolic y coords={first, second, third, forth, fifth, sixth, seventh, eight},
point meta=explicit symbolic,
ytick=data,
xmajorticks=false,
nodes near coords,
nodes near coords align=right, % <-- modified
xmin=0,xmax=1 % <-- added
]

\addplot[] % <-- overwrite default settings with no settings
 coordinates 
{
(0,first) [peer 1]
(0,second) [peer 2]
(0,third) [peer3]
(0,forth) [peer 4]
(0,fifth) [peer 5]
(0,sixth) [peer 6]
(0,seventh) [peer 7]
(0,eight) [peer 8]
}; 
\end{axis} 
\end{tikzpicture}
\end{figure}
\end{document}

相关内容