X Tick Labels abwechselnd versetzt
-
- Forum-Newbie
- Beiträge: 6
- Registriert: Mi 18. Feb 2015, 13:33
X Tick Labels abwechselnd versetzt
Hi!
Für eine Grafik hab ich sehr viele und sehr lange X Tick Labels (das sind Kategorie-Bezeichnungen, keine Koordinaten). Dadurch überdecken sich die teilweise. Ich würde daher gerne jedes zweite X Tick Label ein bisschen nach unten verschieben.
Bei einer Grafik habe ich die Label händisch eingegeben und dann einfach bei jedem Zweiten am Anfang "\\[1em]". Das funktioniert wunderbar ("x tick label style={align=center}" ist dafür zusätzlich notwendig).
Im nächsten Bild lese ich diese aber aus einer Tabelle mit "xticklabels from table" und kann sie nicht mehr händisch angreifen (außerdem sinds viel mehr).
Drum wollte ich um eine Möglichkeit fragen, ob ich automatisch jedes zweite versetzen kann.
Danke
Hansi
Für eine Grafik hab ich sehr viele und sehr lange X Tick Labels (das sind Kategorie-Bezeichnungen, keine Koordinaten). Dadurch überdecken sich die teilweise. Ich würde daher gerne jedes zweite X Tick Label ein bisschen nach unten verschieben.
Bei einer Grafik habe ich die Label händisch eingegeben und dann einfach bei jedem Zweiten am Anfang "\\[1em]". Das funktioniert wunderbar ("x tick label style={align=center}" ist dafür zusätzlich notwendig).
Im nächsten Bild lese ich diese aber aus einer Tabelle mit "xticklabels from table" und kann sie nicht mehr händisch angreifen (außerdem sinds viel mehr).
Drum wollte ich um eine Möglichkeit fragen, ob ich automatisch jedes zweite versetzen kann.
Danke
Hansi
- Johannes_B
- Moderator
- Beiträge: 5079
- Registriert: Do 1. Nov 2012, 14:55
- Kontaktdaten:
Kannst du das unseren fleißigen TikZ-Helfern anhand eines Minimalbeispiels verdeutlichen? Das macht das Erarbeiten einer Lösung einfacher und damit kommst du schneller an eine gute Lösung.
TeXwelt - Fragen und Antworten Schaut vorbei und stellt Fragen.
LaTeX-Vorlagen?
Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.
LaTeX-Vorlagen?
Der Weg zum Ziel: Ruhe bewahren und durchatmen, Beiträge und unterstützende Links aufmerksam lesen, Lösungsansätze verstehen und ggf. nachfragen.
Modifizierung aller Markierungen an der Achse
Trotz des fehlenden Beispiels vermute ich, dass x tick label style={rotate=45,anchor=east} hilfreich sein könnte. Dadurch werden alle Marken gedreht und an ihrem Ende den Abschnitten angeheftet. Die Behandlung einzelner Marken würde dadurch entfallen. Wenn man die Anleitung nach diesem Schlüssel durchsucht, findet man auch Code-Beispiele zur .
-
- Forum-Newbie
- Beiträge: 6
- Registriert: Mi 18. Feb 2015, 13:33
Hi!
Danke für eure bisherigen Antworten.
Hier ein bisschen Code:
Die Variante mit 45° gedrehten Labels habe ich bereits probiert, allerdings ist das in meinem Fall wirklich hässlich und ich möchte unbedingt abwechselnde Labels.
Gibt es eine Möglichkeit beim Label-Style jedes zweite zu ändern?
Danke
Hansi
Danke für eure bisherigen Antworten.
Hier ein bisschen Code:
\documentclass[border=5mm]{standalone} \usepackage{pgfplots} \usepackage{pgfplotstable} \usepackage{tikz} \begin{document} \pgfplotstableread[col sep=comma]{ Label,Value abcdefgh,1 bcdefgha,2 cdefghab,3 defghabc,4 efghabcd,5 fghabcde,6 }\data \begin{tikzpicture} \begin{axis}[ ybar, height=7cm, xtick=data, xticklabels from table={\data}{Label}, %xticklabels={abcdefgh,\\[1em]bcdefgha,cdefghab,\\[1em]defghabc,efghabcd,\\[1em]fghabcde}, %x tick label style={align=center}, % align=... is required for linebreaks in tick labels tick label style={font=\footnotesize}, xtick pos=left, ytick pos=left, xtick align=outside, reverse legend, ] \addplot table [x expr=\coordindex,y={Value}] {\data}; \end{axis} \end{tikzpicture} \end{document}
Gibt es eine Möglichkeit beim Label-Style jedes zweite zu ändern?
Danke
Hansi
Vorschlag:

Code:
Gruß
Elke
Edit: \tick durch \ticknum ersetzt.
x tick label style={yshift={-mod(\ticknum,2)*1em}},

Code:
\documentclass[border=5mm]{standalone} \usepackage{pgfplots}% lädt auch tikz \usepackage{pgfplotstable} \pgfplotsset{compat=1.11} \begin{document} \pgfplotstableread[col sep=comma]{ Label,Value abcdefgh,1 bcdefgha,2 cdefghab,3 defghabc,4 efghabcd,5 fghabcde,6 }\data \begin{tikzpicture} \begin{axis}[ ybar, height=7cm, xtick=data, xticklabels from table={\data}{Label}, x tick label style={yshift={-mod(\ticknum,2)*1em}}, tick label style={font=\footnotesize}, xtick pos=left, ytick pos=left, xtick align=outside, reverse legend, ] \addplot table [x expr=\coordindex,y={Value}] {\data}; \end{axis} \end{tikzpicture} \end{document}
Elke
Edit: \tick durch \ticknum ersetzt.
- Dateianhänge
-
- gl_tlversch.png (11.85 KiB) 2837 mal betrachtet
Zuletzt geändert von esdd am Sa 21. Feb 2015, 01:31, insgesamt 1-mal geändert.
-
- Forum-Newbie
- Beiträge: 6
- Registriert: Mi 18. Feb 2015, 13:33
Hi!
Noch eine kleine Frage: In einem zweiten Bild hab ich "symbolic x coords", gibts da eine Möglichkeit, den "yshift"-Modulo-Trick auch zu verwenden? "\tick" wird da leider ein String, und "\coordindex" (wie für "x expr=\coordindex") kennt er dort gar nicht.
Danke
Hansi
Super, danke, das funktioniert 1a!esdd hat geschrieben:Vorschlag:
x tick label style={yshift={-mod(\tick,2)*1em}},
Noch eine kleine Frage: In einem zweiten Bild hab ich "symbolic x coords", gibts da eine Möglichkeit, den "yshift"-Modulo-Trick auch zu verwenden? "\tick" wird da leider ein String, und "\coordindex" (wie für "x expr=\coordindex") kennt er dort gar nicht.
Danke
Hansi
Verwendung anderer Schlüssel
Wenn statt des Schlüssels »symbolic x coords« die Kombination der Schlüssel »xtick« und »xticklabels« in der Umgebung »axis« verwendet wird, hat die Versetzung der Marken eine Chance.hansiglaser hat geschrieben:[…] In einem zweiten Bild hab ich "symbolic x coords", gibts da eine Möglichkeit, den "yshift"-Modulo-Trick auch zu verwenden? "\tick" wird da leider ein String, und "\coordindex" (wie für "x expr=\coordindex") kennt er dort gar nicht. […]
\documentclass[ 11pt, border=2pt ]{standalone} \usepackage[T1]{fontenc} \usepackage{selinput} \SelectInputMappings{ adieresis={ä}, germandbls={ß} } \usepackage[ngerman]{babel} \usepackage{pgfplots} \pgfplotsset{ compat=1.12, xlabel near ticks, ylabel near ticks } \begin{document} \begin{tikzpicture}[font=\footnotesize] \begin{axis}[ width=13cm, height=8cm, enlargelimits=0.05, xmin=1, xmax=12, xtick={1,2,...,12}, xticklabels={Januar,Februar,März,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember}, x tick label style={yshift={-mod(\tick,2)*1em}}, ybar, bar width=7pt, /pgf/number format/1000 sep=\, ] \addplot coordinates { (1,5036) (2,3386) (3,4096) (4,5106) (5,7026) (6,3806) (7,4296) (8,4356) (9,4516) (10,6526) (11,4356) (12,4516) }; \addplot coordinates { (1,3806) (2,4296) (3,4356) (4,4516) (5,6526) (6,5036) (7,3386) (8,4096) (9,5106) (10,7026) (11,4096) (12,5106)}; \end{axis} \end{tikzpicture} \end{document}

Verwende \xticknum statt \xtickhansiglaser hat geschrieben: Noch eine kleine Frage: In einem zweiten Bild hab ich "symbolic x coords", gibts da eine Möglichkeit, den "yshift"-Modulo-Trick auch zu verwenden? "\tick" wird da leider ein String, und "\coordindex" (wie für "x expr=\coordindex") kennt er dort gar nicht.
x tick label style={yshift={-mod(\ticknum,2)*1em}}
\documentclass[ 11pt, border=2pt ]{standalone} \usepackage[T1]{fontenc} \usepackage{selinput} \SelectInputMappings{ adieresis={ä}, germandbls={ß} } \usepackage{pgfplots} \pgfplotsset{ compat=1.11, } \begin{document} \begin{tikzpicture}[font=\footnotesize] \begin{axis}[ width=13cm, height=8cm, enlargelimits=0.05, symbolic x coords={Januar,Februar,März,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember}, x tick label style={yshift={-mod(\ticknum,2)*1em}}, ybar, bar width=7pt, /pgf/number format/1000 sep=\, ] \addplot coordinates { (Januar,5036) (Februar,3386) (März,4096) (April,5106) (Mai,7026) (Juni,3806) (Juli,4296) (August,4356) (September,4516) (Oktober,6526) (November,4356) (Dezember,4516) }; \addplot coordinates { (Januar,3806) (Februar,4296) (März,4356) (April,4516) (Mai,6526) (Juni,5036) (Juli,3386) (August,4096) (September,5106) (Oktober,7026) (November,4096) (Dezember,5106)}; \end{axis} \end{tikzpicture} \end{document}
Elke
-
- Forum-Newbie
- Beiträge: 6
- Registriert: Mi 18. Feb 2015, 13:33
Großartig, danke, das ist perfekt!esdd hat geschrieben:Verwende \xticknum statt \xtickhansiglaser hat geschrieben: Noch eine kleine Frage: In einem zweiten Bild hab ich "symbolic x coords", gibts da eine Möglichkeit, den "yshift"-Modulo-Trick auch zu verwenden? "\tick" wird da leider ein String, und "\coordindex" (wie für "x expr=\coordindex") kennt er dort gar nicht.
x tick label style={yshift={-mod(\ticknum,2)*1em}}
Danke
Hansi