nodes bei ybar interval (PGF)

Tabellen und Grafiken erstellen und anordnen


elmar.a
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: Mo 25. Jun 2012, 18:36

nodes bei ybar interval (PGF)

Beitrag von elmar.a »

Guten Morgen,

ich versuche mich gerade im erstellen eines Balkendiagramms (ybar interval) mit PGF. Mein code sieht momentan wie folgt aus:
\documentclass{scrartcl}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
		ybar interval,
		xtick=data,
		xticklabel interval boundaries,
		x tick label style=
			{rotate=90,anchor=east},
		nodes near coords align={vertical},
		nodes near coords,
		]

	\addplot+[] plot table[x={Range_from},y={Total_frequency}] {
	Range_from	Frequency_hekla1980	Frequency_hekla2000	Total_frequency
	0	0	0	0
	5	1	0	1
	10	0	0	0
	15	1	0	1
	20	0	0	0
	25	0	0	0
	30	1	0	1
	35	1	0	1
	40	0	0	0
	45	1	0	1
	50	2	1	3
	55	1	2	3
	60	5	9	14
	65	25	11	36
	70	19	43	62
	75	1	0	1
	80	0	0	0
	85	0	0	0
	90	0	0	0
	95	1	0	1
	100
	};

\end{axis}
\end{tikzpicture}

\end{document}
Das Diagramm sieht auch soweit schon so aus, wie ich's gern haette. Verwundert bin ich allerdings
1) ueber die Position der nodes (nicht zentriert ueber dem jeweiligen Balken; habe einige align-Befehle ausprobiert, leider den richtigen aber nicht gefunden?!) und
2) ueber die letzte node (die 1 am rechten Rand des Intervalls 95-100). Laut Manual sollte diese eigentlich nicht auftauchen?!
Consequently, there is one coordinate too much: the last coordinate will only be used to determine the interval width; its y value doesn't in uence the bar appearance. (PGF Manual, S. 66)
Ueber Loesungsansetze, Ideen und Anmerkungen waere ich sehr dankbar!

Viele Gruesse,
elmar.a

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Zitat aus der Doku zu pgfplots, Version 1.9:
Currently nodes near coords does not work satisfactorily for ybar interval or xbar interval,
sorry.

elmar.a
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: Mo 25. Jun 2012, 18:36

Beitrag von elmar.a »

esdd hat geschrieben:Currently nodes near coords does not work satisfactorily for ybar interval or xbar interval,
sorry.
Vielen Dank fuer die schnelle Antwort, esdd!
Das muss ich ueberlesen haben... gilt das fuer die Position als auch fuer die 'ueberfluessige' node am rechten Rand des plots?
Ist es ggf. moeglich die nodes manuell zu beeinflussen?


(edit: kein Wunder, hatte noch das 1.8-manual aufm Rechner...)

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Hier ist ein Vorschlag, der ausnutzt, dass alle Intervalle die Breite 5 haben:
\documentclass{scrartcl} 

\usepackage{pgfplots} 
\pgfplotsset{compat=newest} 

\usepackage{pgfplotstable}

\pgfplotstableread{
  Range_from  Frequency_hekla1980  Frequency_hekla2000  Total_frequency 
  0    0   0   0 
  5    1   0   1 
  10   0   0   0 
  15   1   0   1 
  20   0   0   0 
  25   0   0   0 
  30   1   0   1 
  35   1   0   1 
  40   0   0   0 
  45   1   0   1 
  50   2   1   3 
  55   1   2   3 
  60   5   9   14 
  65   25  11  36 
  70   19  43  62 
  75   1   0   1 
  80   0   0   0 
  85   0   0   0 
  90   0   0   0 
  95   1   0   1 
  100  0   0   0
}\data

\begin{document} 

\begin{tikzpicture} 
\begin{axis}[ width=\linewidth,
  ybar interval, 
  xtick=data, 
  xticklabel interval boundaries, 
  x tick label style={rotate=90,anchor=east},domain=0:100 
] 

  \addplot table[x={Range_from},y={Total_frequency}] \data;

  \addplot[only marks,mark=none, nodes near coords,
    x filter/.code={\pgfmathadd{#1}{2.5}},restrict x to domain=0:100]
    table[x={Range_from},y={Total_frequency}] \data;
\end{axis}

\end{tikzpicture} 

\end{document}
Gruß
Elke

PS: Schau dir mal bei dem Fragezeichen neben „Status aktuell halten“ an, was „Rückfrage“ bedeutet.

elmar.a
Forum-Anfänger
Forum-Anfänger
Beiträge: 28
Registriert: Mo 25. Jun 2012, 18:36

Beitrag von elmar.a »

Wow, Elke, das sieht super aus!
Vielen Dank, der domain-Befehl hat mir gefehlt!! Fuer den Fall von unterschiedlich grossen Intervallen nicht unbedingt die Loesung, aber in diesem Fall hat's mir sehr geholfen!

Scheint, als gaebe es noch immer viel, viel, viel zu lernen, was PGF angeht (und auch die Posts hier im Forum---sry fuer den 'Rueckfrage'-Fehler!)

Antworten