xbar y 轴标签每隔一个条形图都是空白的

xbar y 轴标签每隔一个条形图都是空白的

代码生成一个水平条形图,其中每个条形的名称(“a”、“b”等)仅出现在其他每个条形中。条形的数量(10)似乎会引发此问题;删除其中一个条形即可解决问题。但显然我需要 10 个条形

\begin{tikzpicture}
  \begin{axis}[title  = Figure 1,
    xbar,
    y axis line style = { opacity = 0 },
        axis x line*=bottom,
    tickwidth         = 0pt,
        xmin=0,
        /pgf/bar width=18pt,
        width=.75\textwidth, 
      symbolic y coords = {a,
                b,
                c,
                d,
                e,
                f,
                g,
                h,
                i, 
                j },
   nodes near coords,
  ]
  \addplot coordinates {(14,a) 
                (15,b)
                (16,c)
                (16,d)
                (17,e)
                (21,f)
                (21,g)
                (30,h)
                (34,i)
                (34,j)};
  \end{axis}
\end{tikzpicture}

答案1

Pgfplots 有自己的方法来决定有用的刻度密度等。在大多数情况下,这个决定会产生吸引人的输出。但有时必须推翻 做出的决定pgfplots。这样做的一种方法是设置刻度之间的距离。在你的情况下,似乎说 就足够了ytick distance=1

\documentclass[tikz,border=3.14mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[title  = Figure 1,
    xbar,
    y axis line style = { opacity = 0 },
        axis x line*=bottom,
    tickwidth         = 0pt,
        xmin=0,
        /pgf/bar width=18pt,
        width=.75\textwidth,ytick distance=1,
      symbolic y coords = {a,
                b,
                c,
                d,
                e,
                f,
                g,
                h,
                i, 
                j },
   nodes near coords,
  ]
  \addplot coordinates {(14,a) 
                (15,b)
                (16,c)
                (16,d)
                (17,e)
                (21,f)
                (21,g)
                (30,h)
                (34,i)
                (34,j)};
  \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案附有请求,请考虑在您的帖子中提供完整的最小工作示例,即像上面那样以 开头\documentclass、以 结尾的文档\end{document}可以编译并包含足以说明问题的内容。完全可以想象,tikzpicture 的代码在不同的文档类中表现不同,因为例如\textwidth依赖于它们。

答案2

除非您想要一些炫耀性的附加组件,对于简单的水平条形图,我建议使用简单易用的bchart软件包。只有几个选项可用,但足以获得干净优雅的结果。

然而,为了展示如何在这些选项之外自定义情节的某些部分,MWE 展示了不必要的和不雅的彩色情节。

姆韦

\documentclass[tikz,border=3.14mm]{standalone}
\newcounter{ylab}\setcounter{ylab}{0}
\usepackage{bchart}\renewcommand{\bcfontstyle}{\color{green!30!black}}
\def\xbar#1{\color{darkgray}\stepcounter{ylab}%
\bcbar[label=\color{red!70!black}\alph{ylab},%
value=\textcolor{blue!#1!blue!70}{#1},color=blue!#1]{#1}}

\begin{document}

\begin{bchart}[step=5,max=35,scale=1,width=.5\linewidth]
\xbar{34}
\xbar{30}
\xbar{21}
\xbar{17}
\xbar{16}
\xbar{16}
\xbar{15}
\xbar{14}
\xbar{9}
\xbar{17}
\end{bchart}

\end{document}

相关内容