我想用 $ 符号格式化此条形图中的节点(例如 $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 width
为20pt
,并且条形之间的间隙为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}