Graphics, Figures & Tablescropped ybar plot

Information and discussion about graphics, figures & tables in LaTeX documents.
Post Reply
Linguist
Posts: 43
Joined: Mon Nov 07, 2011 12:07 pm

cropped ybar plot

Post by Linguist »

Hi All,

The bar plot produced by the following code has two issues:
1) It is cropped at the extreme left and right edges
2) There is too much space between the two groups of bars.

Code: Select all

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}

\begin{document}

\begin{tikzpicture}
 \begin{axis}[
   ybar,
   symbolic x coords={Overall,Specific},
   xtick=data,
   yticklabel={\pgfmathprintnumber{\tick}\%},
   ymin=0,
   ymax=100,
   ymajorgrids=true,
  ]
  \addplot coordinates {(Overall,45) (Specific,70)};
  \addplot coordinates {(Overall,29) (Specific,16)};
  \addplot coordinates {(Overall,26) (Specific,15)};
  \legend{type1,type2,type3}
 \end{axis}
\end{tikzpicture}

\end{document}
This person has a similar issue here: https://tex.stackexchange.com/questions ... re-cropped But the first solution (using enlargelimits) just adds space below the ybars for my plot and the spacing/cropping issues remain.

The equivalent to the second solution (setting xmin and xmax with [normalized]) indeed changes where the bars are placed , but the principle behind normalized is not explained so I am left randomly guessing numbers to try and approximate an acceptable output.

Recommended reading 2024:

LaTeXguide.org • LaTeX-Cookbook.net • TikZ.org

NEW: TikZ book now 40% off at Amazon.com for a short time.

And: Currently, Packt sells ebooks for $4.99 each if you buy 5 of their over 1000 ebooks. If you choose only a single one, $9.99. How about combining 3 LaTeX books with Python, gnuplot, mathplotlib, Matlab, ChatGPT or other AI books? Epub and PDF. Bundle (3 books, add more for higher discount): https://packt.link/MDH5p

Bartman
Posts: 369
Joined: Fri Jan 03, 2020 2:39 pm

cropped ybar plot

Post by Bartman »

Section 4.14.1 "Configuration of Limits Ranges" of the manual not only lists the enlargelimits option. Other options allow you to change the size for only one axis.

Alternatively, you could avoid the symbolic coordinates and use numbers for the x-axis, while the labeling is done using the xticklabels option.
Linguist
Posts: 43
Joined: Mon Nov 07, 2011 12:07 pm

cropped ybar plot

Post by Linguist »

Thanks for pointing me in the right direction.

I've found using enlarge x limits={abs=<value>} combined with specifying the width of the plot allows me to position the bars with more control and get a better result.

An explanation of how
Bartman wrote:avoiding the symbolic coordinates and use numbers for the x-axis, while the labeling is done using the xticklabels option
might be useful for others. (I can't figure it out) But for future reference I'm putting the updated code below.

Code: Select all

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}

\begin{document}

\begin{tikzpicture}
 \begin{axis}[
   ybar,
   symbolic x coords={Overall,Specific},
   xtick=data,
   yticklabel={\pgfmathprintnumber{\tick}\%},
   ymin=0,
   ymax=100,
   ymajorgrids=true,
   width=6cm,                   %added to specify the width so that the gap between each group of bars is reduced
   enlarge x limits={abs=1cm}   %added to `move' each group of bars 1cm away from the edge of the plot
  ]
  \addplot coordinates {(Overall,45) (Specific,70)};
  \addplot coordinates {(Overall,29) (Specific,16)};
  \addplot coordinates {(Overall,26) (Specific,15)};
  \legend{type1,type2,type3}
 \end{axis}
\end{tikzpicture}

\end{document}
The legend in the above bar chart partially covers up the first bar in the second group, but that can be fixed with legend pos=north west, or various other options covered in §4.9.5 of the pgfplots manual
Post Reply