pgfplots 节点中的美元符号,调整条形之间的空间

pgfplots 节点中的美元符号,调整条形之间的空间

我想用 $ 符号格式化此条形图中的节点(例如 $275)。​​(条形图的集合也可以更紧密地靠在一起;也许这应该是另一个问题。)

答案可能就在某处,但我的搜索还没有找到。

在此处输入图片描述

这是我的 MWE:

%http://tex.stackexchange.com/questions/88892/pgfplots-bar-plot-spacing-inbetween-bars
%http://tex.stackexchange.com/questions/113241/pgfplots-grouped-bar-chart-from-file
%http://tex.stackexchange.com/questions/35872/multiline-coords

\documentclass{standalone}
\usepackage{tikz,pgfplots}
\usepackage{pgfplotstable}

\usetikzlibrary{calc,decorations.pathmorphing}

%deal with warning message in log
\pgfplotsset{compat=1.8}

\usepackage{helvet}
\usepackage[eulergreek]{sansmath}

\begin{document}
\newcommand{\mywidth}{12cm}
\newcommand{\myheight}{5cm}

\pgfplotstableread[col sep=comma]{
seats, 2003, 2008
ordinary, 42.26, 52.16
premium, 275, 325
}\ticketprices

\begin{tikzpicture}[font=\sffamily\sansmath]

\begin{axis}[ 
      ybar=10pt,
      bar width=20pt,
      ymin=0,
      tick style={draw=none},
      width=\mywidth, height=\myheight, 
      title={Tickets at Fenway Park}, 
      hide y axis,
      axis x line*=bottom,
      xtick=data,
      xticklabel style={align=center},
      xticklabels={
        2003 2008\\
        ordinary seats,
        2003 2008\\
        premium seats
      },
      nodes near coords,
    ]
    \addplot [fill=gray] table[x expr=\coordindex, y=2003]  {\ticketprices};
    \addplot [fill=black] table[x expr=\coordindex, y=2008] {\ticketprices};
\end{axis} 
\end{tikzpicture}
\end{document}

答案1

nodes near coords您可以使用可选参数决定在标签中打印什么。默认情况下,它被定义为nodes near coords=\pgfmathprintnumber{\pgfplotspointmeta},因此它是值的漂亮格式\pgfplotspointmeta,默认情况下,它保存当前y值。

就你的情况而言,你可以设置

nodes near coords={\$\pgfmathprintnumber{\pgfplotspointmeta}}

在每个值的前面放置一个美元符号。

为了使绘图宽度与数据系列的数量相匹配,最简单的方法是根据条形宽度定义 x 单位向量:如果您的bar width20pt,并且条形之间的间隙为ybar=15pt,则可以设置x={2*15pt+2*20pt+10pt}(两个数据系列,两个间隙,再加上一些额外的间隙以分隔组)。为确保条形图不会在边缘被切断,您可以设置enlarge x limits={abs=20pt+15pt},(一个条形图的空间,加上另一个间隙)。

随着更多地块的添加,解决方案也会扩大:

\documentclass{standalone}
\usepackage{tikz,pgfplots}
\usepackage{pgfplotstable}

\usetikzlibrary{calc,decorations.pathmorphing}

%deal with warning message in log
\pgfplotsset{compat=1.8}

\usepackage{helvet}
\usepackage[eulergreek]{sansmath}

\begin{document}
\newcommand{\mywidth}{12cm}
\newcommand{\myheight}{5cm}

\pgfplotstableread[col sep=comma]{
seats, 2003, 2008
ordinary, 42.26, 52.16
premium, 275, 325
extreme, 800, 850
}\ticketprices

\begin{tikzpicture}[font=\sffamily\sansmath]

\begin{axis}[ 
      ybar=15pt,
      bar width=20pt,
      x={2*15pt+2*20pt+10pt},
      enlarge x limits={abs=20pt+15pt},
      ymin=0,
      tick style={draw=none},
      width=\mywidth, height=\myheight, 
      title={Tickets at Fenway Park}, 
      hide y axis,
      axis x line*=bottom,
      xtick=data,
      xticklabel style={align=center},
      xticklabels={
        2003 2008\\
        ordinary seats,
        2003 2008\\
        premium seats,
        2003 2008\\
        extreme deluxe
      },
      nodes near coords={\$\pgfmathprintnumber{\pgfplotspointmeta}},
    ]
    \addplot [fill=gray] table[x expr=\coordindex, y=2003]  {\ticketprices};
    \addplot [fill=black] table[x expr=\coordindex, y=2008] {\ticketprices};
\end{axis} 
\end{tikzpicture}
\end{document}

相关内容