34

You can set the spacing between the bars using the optional argument to ybar (the default is 2pt). For indicating that some of the data values exceed the axis range, you could clip the values at some level that's slightly larger than your axis limit using restrict y to domain*=0:<value>, making sure that you set clip=false so that the bars can ...


17

PGFPlots is printing the log transformed x value. To print the non transformed value, set point meta=rawx. (Similarly for ybar, use point meta=rawy to get the raw y value.) Note that bar plots with logarithmic axes are a really bad idea, since the zero point of logarithmic plots is arbitrary and the length of the bar doesn't carry any information. A dot ...


12

I think the easiest way to do it is as you've done, keeping in mind that if there are N equally spaced points, the pos-ition of the n-th point is (n-1)/(N-1). In your case you have 5 points and you want to mark the second, so it should be at position 0.25: \documentclass{standalone} \usepackage{pgfplots} \usepackage{pgfplotstable} % For \...


11

You can make the value of the y coordinate available using the key visualization depends on=y \as \rawy (where \rawy is a macro name you choose). Then you can shift the nodes using shift={(axis direction cs:0,-\rawy)}. Note that you'll have to use axis direction cs because the coordinate system is shifted and scaled at the time when the nodes are placed. \...


11

I would use the nodes near coords functionality for this, which allows you to associate the labels directly with the coordinates, regardless of the spacing. With a bit of TikZ style acrobatics, you can define a key nodes near some coords={1,3} that takes either a single coordinate index or a list of indices, and activates the label printing only for those ...


10

As standard node near coordinates is \pgfmathprintnumber{\pgfplotspointmeta}. You want to run that only if \pgfplotspointmeta is non-zero. This may be tested for with \pgfmathfloatifflags as follows: near coords={\pgfmathfloatifflags{\pgfplotspointmeta}{0}{}{\pgfmathprintnumber{\pgfplotspointmeta}}} with 0 indicating test whether the number is equal to ...


10

You can adapt the method from Center nodes near coords in a stacked ybar plot to use nodes near coords for the labels: \documentclass[border=5mm]{standalone} \usepackage{pgfplots} \begin{document} \makeatletter \pgfplotsset{ calculate offset/.code={ \pgfkeys{/pgf/fpu=true,/pgf/fpu/output format=fixed} \pgfmathsetmacro\testmacro{(\...


9

This is one possible solution. Firstly, move every node near coords down a little bit via every node near coord/.append style={yshift=-0.5cm} % yshift can be adjusted Then adds to the addplot[options] a particular nodes near coords (the blue one) via raisebox nodes near coords=\raisebox{0.7cm}{\pgfmathprintnumber\pgfplotspointmeta} % 0.7 can be ...


8

The key fixed zerofill only applies numbers that also use the fixed style (that's a bit confusing). So if you set \pgfkeys{ /pgf/number format/precision=1, /pgf/number format/fixed zerofill=true, /pgf/number format/fixed } you'll get the desired output: \documentclass{article} \usepackage{pgfplots} \begin{document} \begin{...


8

It does not work in your MWE because you are overwriting it by also giving the option nodes near coors to the \addplot command. Remove the latter one (or specify format here), and it will print. I added a thinspace before the percentage sign, although it can also be recommended to load the siunitx package and let that format and typeset the values for you. ...


8

By default nodes near coords prints \pgfmathprintnumber{\pgfplotspointmeta}. You can add a percent sign by saying nodes near coords=\pgfmathprintnumber{\pgfplotspointmeta}\% \documentclass{article} \usepackage{pgfplots} \begin{document} \begin{tikzpicture} \begin{axis}[ symbolic x coords={A,B,C}, nodes near coords=\pgfmathprintnumber{\...


7

You are overriding the style of the nodes so you need /.append style instead Modifying only these lines nodes near coords align={right}, every node near coord/.append style={font=\tiny, inner sep=1pt}, leads to


7

Slightly less ink: \documentclass[justified]{tufte-book} \usepackage{pgfplots,lipsum} \pgfplotsset{compat=newest} \begin{document} \begin{figure*}[htbp] \begin{tikzpicture} \centering \begin{axis}[ ybar, axis on top, title={Cumulative Progress of Works}, height=8cm, width=15.5cm, bar width=0.4cm, ymajorgrids, ...


7

Set reverse legend in the axis options, and add forget plot to those \addplot commands you don't want to appear in the legend. Also, you only need either the two \addlegendentry commands, or the \legend command, but not both. \documentclass{standalone} \usepackage{pgfplots} \pgfplotsset{compat=1.3} \begin{document} \begin{tikzpicture} \begin{axis}[ ...


6

A way is to exploit the siunitx package similarly to: pgfplots: Set exponent of scientific number format for nodes near coords The code: \documentclass[png,tikz,border=10pt]{standalone} \usepackage{pgfplots} \pgfplotsset{compat=1.8} \usepackage{siunitx} \begin{document} \begin{tikzpicture} \pgfkeys{ /pgf/number format/precision=1, /pgf/number ...


6

Remove this style option every node near coord/.append style={anchor=south}, and replace it with the following options: nodes near coords align={anchor=south}, nodes near coords bar offset=1 Now, even if you increase the offset in your table by random amounts, the nodes will always appear nicely on top, without the need for you to manually shift them. ...


6

Besides adding the circles "manually" as John Kormylo has suggested in the comments below the question, here a more "automatic" solution. (This is very related your question: Add ellipse around data point part 2.) % used PGFPlots v1.14 \documentclass[border=5pt]{standalone} \usepackage{pgfplots} \newcommand{\dsnfive}{prob5_2.dat} \begin{...


6

Because you weren't very specific I guessed that you meant something like the following ... % used PGFPlots v1.14 \documentclass[border=5pt]{standalone} \usepackage{pgfplots} \begin{document} \begin{tikzpicture} \begin{axis}[ xbar, tick align=outside, width=11cm, height=8cm, bar width={...


5

Yes, you can. For details on how to do that, please have a look at the comments in the code. % used PGFPlots v1.14 \documentclass[border=5pt]{standalone} \usepackage{pgfplots} \pgfplotsset{ TornadoPlot/.style={% Overall settings width=\textwidth, height=7cm, xmin=-50, xmax=50, line ...


5

I would shift the nodes on blue columns slightly to the left, and nodes on the red columns slightly to the right by using the every node near coord/.append style={xshift=<dim>} key together with the \addplot+ command (instead of \addplot). MWE \documentclass[border=2pt]{standalone} \usepackage{pgfplots} \pgfplotsset{ base/.style={ ymin=0, ...


5

I'm not sure if you can get the PGF math parser to do this (might be a useful feature request), but you can use siunitx' \num macro, which has a fixed-exponent option: \documentclass{report} \usepackage{tikz} \usepackage{pgfplots} \pgfplotsset{compat=newest} \usepackage{siunitx} \begin{document} \begin{tikzpicture} \begin{axis}[ width=6cm, xtick=\...


5

Here is a solution that works without visualization depends on. Please note that I have truncated the given code to just one plot, because there is nothing new in the second one and only would make the code even longer. I also removed a lot of styles etc. which almost didn't change the output and weren't related to the questions, so would also just "...


5

I would manually place the nodes. Takes a bit more work, but I think the results are better: Notes: I added clip=false so that the text of the node was not cut off. Code: \documentclass{article} \usepackage{pgfplots} \usetikzlibrary{decorations.markings} \begin{document} \begin{tikzpicture} \begin{axis}[ compat=newest, height=0.4\textheight, ...


5

My suggestion would be to update your pgfplots package. From pgfplots version 1.9, nodes near coords gives a better result. Compare the result with version 1.8: \documentclass{article} \usepackage{pgfplots} % to print charts \pgfplotsset{compat=1.8} \begin{document} \begin{figure} \centering \begin{tikzpicture} \begin{axis}[ ybar ...


5

I adapted the code from the link you provided in the question to give the desired result. Because only the x values have tick lines it is needed to draw three axis: One for the "man" data, one for the "woman" data and one only for plotting the ydata, because the tick length cannot be set independently for the x and y axis. For more details have a look at ...


5

The enlargelimits=0.15 is adding extra space below the data and to the left of the data. By setting enlargelimits=false and then enlarge x limits=0.15 you can fix the axis issue. The nodes near coords is creating the label for the two data series. In the solution below, I've removed this from the options for the axis, and added it to the options for the \...


5

Edit: A small variation of @rbrgnall answer (+1), with use of table (differences are marked in code by % <---%): \documentclass[margin=3mm]{standalone} \usepackage{pgfplots} \pgfplotsset{compat=1.16} % <--- \usepackage{pgfplotstable} % <--- \usepackage{siunitx} % <--- \pgfplotstableread[col sep=comma]% % <--- { state, ...


4

To avoid the hyphenation in the yticklabel: yticklabel style={text width=0.2\textwidth,align=flush left}, To hide value 0 as nodes near coords: nodes near coords={% \pgfmathtruncatemacro\NNC{\pgfkeysvalueof{/data point/x}}% \ifnumequal{\NNC}{0}{}{\NNC}% needs package etoolbox }, To avoid xtick scaling: scaled x ticks=false, To prevent nodes near ...


4

Your MWE is far from minimal; I reproduced the situation with a much simpler file. The .log file shows everything you need to know: LaTeX Font Warning: Font shape `T1/cmss/m/n' in size <1> not available (Font) size <5> substituted on input line 74. Numerous warnings like this show up when compiling your MWE. The standard fonts are ...


4

In PGFPlots v1.13 your example now works with the new key stack negative=separate. Here the full code, which can also be found in the manual in the section 4.5.9 on page 99. \documentclass[border=5mm]{standalone} \usepackage{pgfplots} \pgfplotsset{compat=1.13} \begin{document} \begin{tikzpicture} \pgfplotstableread{ Year Cat1 ...


Only top voted, non community-wiki answers of a minimum length are eligible