X Tick Labels abwechselnd versetzt

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: X Tick Labels abwechselnd versetzt

von hansiglaser » Sa 21. Feb 2015, 12:06

esdd hat geschrieben:
hansiglaser 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.
Verwende \xticknum statt \xtick
x tick label style={yshift={-mod(\ticknum,2)*1em}}
Großartig, danke, das ist perfekt!

Danke
Hansi

von esdd » Sa 21. Feb 2015, 01:41

hansiglaser 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.
Verwende \xticknum statt \xtick
x tick label style={yshift={-mod(\ticknum,2)*1em}}
Das habe ich jetzt auch oben so geändert. Dann funktioniert das auch mit symbolic x coords.
\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}
Gruß
Elke

Verwendung anderer Schlüssel

von Stamm- » Do 19. Feb 2015, 16:22

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. […]
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.
\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}
Bild

von hansiglaser » Do 19. Feb 2015, 13:58

Hi!
esdd hat geschrieben:Vorschlag:
x tick label style={yshift={-mod(\tick,2)*1em}},
Super, danke, das funktioniert 1a!

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

von esdd » Mi 18. Feb 2015, 23:01

Vorschlag:
x tick label style={yshift={-mod(\ticknum,2)*1em}},
Bild

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}
Gruß
Elke

Edit: \tick durch \ticknum ersetzt.
Dateianhänge
gl_tlversch.png
gl_tlversch.png (11.85 KiB) 2849 mal betrachtet

von hansiglaser » Mi 18. Feb 2015, 22:02

Hi!

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}
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

Modifizierung aller Markierungen an der Achse

von Stamm- » Mi 18. Feb 2015, 17:54

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 .

von Johannes_B » Mi 18. Feb 2015, 17:25

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.

X Tick Labels abwechselnd versetzt

von hansiglaser » Mi 18. Feb 2015, 17:21

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

Nach oben