11

My figures are always off-center because the right axis is trimmed closer to the figure than the left. Do I have to manually extend the right axis by an adhoc amount every time?

enter image description here

\documentclass[tikz,border=3pt]{standalone}
\usepackage{pgfplots, pgfplotstable}
\usepackage{xcolor}
\usepackage{pgfplots}
\usepackage{tikz}




\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        %width  = 0.85*\textwidth,
        %height = 8cm,
        %major x tick style = transparent,
        ybar,%=2*\pgflinewidth,
        bar width=20pt,
        %ymajorgrids = true,
        ylabel = {Deposition \%},
        symbolic x coords={{4  ac.h$^{-1}$},{6  ac.h$^{-1}$}},
        xtick = {{4  ac.h$^{-1}$},{6  ac.h$^{-1}$}},
        ymax=80,
        scaled y ticks = false,
        enlarge x limits=0.25,
        ymin=0,
        legend cell align=left,
        legend style={
                at={(1,1.05)},
                anchor=south east,
                column sep=1ex
        }
    ]


        \addplot [fill=black, draw=black,bar shift=3pt] coordinates {({4  ac.h$^{-1}$},61.66779959)}; %\addlegendentry{4  ac.h$^{-1}$}
\addplot [fill=white, draw=black,bar shift=-3pt] coordinates {({6  ac.h$^{-1}$},65.77432124)};
%\addplot [fill=white, draw=black, bar shift=0.5ex] table [x=X, y=6ACH]  {\datatable}; \addlegendentry{6  ac.h$^{-1}$}


    \end{axis}
\end{tikzpicture}
\end{document} 

This doesn't seem to work for standalone document class pgfplots and figure centering

and this is adhoc: Centering a TikZ picture around an area Excel: 5 seconds but no Tex formatting and wrong fonts. enter image description here

EDIT

Axis labels are cut off and part of the ytick enter image description here

\documentclass[tikz,border=12pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{plotmarks}
\begin{document}
\definecolor{mycolor1}{rgb}{0.0416666666666667,0,0}

\begin{tikzpicture}[trim axis left, trim axis right]


\begin{axis}[%
width=6.17578125in,
height=2.23276041666667in,
area legend,
scale only axis,
xmin=0.5,
xmax=5.5,
xtick={1,2,3,4,5},
xticklabels={Equipment,Patient,{Hygiene products},Near-bed,Far-bed},
ymin=0,
ymax=0.35,
ytick={  0, 0.1, 0.2, 0.3, 0.4},
ylabel={Probability density},yticklabel style={/pgf/number format/fixed},
legend style={at={(0.143572984749455,0.733206590621038)},anchor=south west,draw=black,fill=white,legend cell align=left}
]
\addplot[ybar,bar width=0.282321428571429in,bar shift=-0.176450892857143in,fill=mycolor1,draw=black] plot coordinates{(1,0.163793103)
(2,0.164367816)
(3,0.141954023)
(4,0.279310345)
(5,0.250574713)};

\addlegendentry{Smith et al.};

\addplot [
color=black,
solid,
forget plot
]
table[row sep=crcr]{
0.5 0\\
5.5 0\\
};
\addplot[ybar,bar width=0.282321428571429in,bar shift=0.176450892857143in,fill=white,draw=black] plot coordinates{(1,0.165289256)
(2,0.185950413)
(3,0.157024793)
(4,0.285123967)
(5,0.20661157)};

\addlegendentry{Adjusted YAB};

\end{axis}
\end{tikzpicture}%
\end{document}
11
  • 1
    Producing nonsense in 5 seconds is not better than making a decent plot with others :) So make a fair comparison. Don't underestimate the force... Don't forget to floss. :P tex.stackexchange.com/questions/109299/…
    – percusse
    Commented Apr 19, 2013 at 12:35
  • 1
    If you use \begin{tikzpicture}[trim axis left, trim axis right], the axis will be centered correctly.
    – Jake
    Commented Apr 19, 2013 at 12:40
  • @Jake That's what I thought. But it cuts off my ylabel
    – HCAI
    Commented Apr 19, 2013 at 12:44
  • 1
    @HCAI: Kind of, yes: It's no longer inside the bounding box, but it's still in the pdf. If you include the file in a document, the label will show up correctly.
    – Jake
    Commented Apr 19, 2013 at 12:45
  • @percusse Undoubtedly accurate on all accounts. So: Producing nonsense in 5 seconds is not better than making a decent plot in hours :)
    – HCAI
    Commented Apr 19, 2013 at 12:46

2 Answers 2

13

If you use \begin{tikzpicture}[trim axis left, trim axis right], the axis will be centered correctly.

3

What I came up with is to simply add a node with the size of the bounding box, with an inner xsep, while using the axis as a bounding box and overlay for ylabel and yticklabel:

\usepackage{pgfplots}
\usetikzlibrary{fit}

\begin{tikzpicture}

    \begin{axis}[
        use as bounding box,
        ylabel style={overlay},
        yticklabel style={overlay},
        % ...
    ]
        % ...
    \end{axis}

    \node[
        draw=none,
        fit=(current bounding box.north west)
            (current bounding box.south east),
        inner xsep=5em % adjust as needed
    ] at (current bounding box.center) {};

\end{tikzpicture}

With the example of this question, this is the result:

pgfplot center

This did also work when including it as a standalone in another TeX file.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .