45° rotierter Text als Spaltenüberschrift

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: 45° rotierter Text als Spaltenüberschrift

von Bartman » So 12. Jun 2016, 19:09

Danke für Deine Mühe. Ich bevorzuge Deine zweite Variante.

von esdd » Sa 11. Jun 2016, 19:47

Dann müssen die Linien anschließend noch gezeichnet werden:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix,calc}
\usepackage[utf8]{inputenc}
\begin{document}
\begin{tikzpicture}[
  dot/.style={fill=#1,circle,minimum size=4ex,anchor=center},
  dot/.default={black},
]
\matrix[
  matrix of nodes,
  row sep=.6666em,
  column sep=.6666em,
  draw
](m){
  |[dot=blue!20]| ? & |[dot=green]|     & |[dot=green]| \\ 
  |[dot=green]|     & |[dot=blue!20]| ? & |[dot=green]| \\ 
  |[dot=red]|       & |[dot=yellow]|    & |[dot=green]| \\
};
\foreach[count=\i] \j in {2,3}{
    \draw($(m-1-\i|-m.north)!.5!(m-1-\j|-m.north)$)coordinate(h)--(h|-m.south);
    \draw($(m-\i-1-|m.west)!.5!(m-\j-1-|m.west)$)coordinate(h)--(h-|m.east);
  }

\foreach[count=\r] \text in{
    Text A,
    längerer Text B,
    Text C
  }\node[anchor=east]at(m-\r-1.west-|m.west){\text};

\foreach[count=\c] \text in{
    foobar test,
    etwas anderes,
    lipsum swääg
  }\node[anchor=north east, rotate=45]at(m-1-\c.south|-m.south){\text};
\end{tikzpicture}
\end{document}
oder
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix,calc}
\usepackage[utf8]{inputenc}
\begin{document}
\begin{tikzpicture}[
  dot/.style={fill=#1,circle,minimum size=4ex,anchor=center},
  dot/.default={black},
  rbu/.style={dot=blue!20},
  rbl/.style={dot=green},
  rbm/.style={dot=yellow},
  rbh/.style={dot=red!50},
]
\matrix[
  matrix of nodes,
  nodes in empty cells,
  nodes=rbl,
  row sep=.6666em,
  column sep=.6666em,
  draw
](m){
  |[rbu]|?&        &\\
          &|[rbu]|?&\\
  |[rbh] |&|[rbm]| &\\
};
\foreach[count=\i] \j in {2,3}{
    \draw($(m-1-\i|-m.north)!.5!(m-1-\j|-m.north)$)coordinate(h)--(h|-m.south);
    \draw($(m-\i-1-|m.west)!.5!(m-\j-1-|m.west)$)coordinate(h)--(h-|m.east);
  }

\foreach[count=\r] \text in{
    Text A,
    längerer Text B,
    Text C
  }\node[anchor=east]at(m-\r-1.west-|m.west){\text};

\foreach[count=\c] \text in{
    foobar test,
    etwas anderes,
    lipsum swääg
  }\node[anchor=north east, rotate=45]at(m-1-\c.south|-m.south){\text};
\end{tikzpicture}
\end{document}
Gruß
Elke

von Bartman » Sa 11. Jun 2016, 00:27

@esdd

Danke für Dein matrix-Beispiel.

Darf ich statt
\usebox\rbu & \usebox\rbl & \usebox\rbl \\
\usebox\rbl & \usebox\rbu & \usebox\rbl \\
\usebox\rbh & \usebox\rbm & \usebox\rbl \\
an der Stelle auch
|[dot=blue!20]| ? & |[dot=green]|     & |[dot=green]| \\
|[dot=green]|	  & |[dot=blue!20]| ? & |[dot=green]| \\
|[dot=red]|	    & |[dot=yellow]|    & |[dot=green]| \\
benutzen? Wenn ja, welche Änderungen müssten dafür in Deinem Beispiel vorgenommen werden, um das gleiche Ergebnis zu erzielen?

von esdd » Fr 10. Jun 2016, 09:17

Hier ist mal noch ein Beispiel mit einer Matrix
\documentclass[margin=5pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{matrix}
\tikzset{
   dot/.style={fill=#1,circle,minimum size=4.5ex,anchor=center},
   dot/.default={black}
}

\newsavebox\rbu
\newsavebox\rbl
\newsavebox\rbm
\newsavebox\rbh

\begin{document}
\sbox\rbu{\tikz\node[dot=blue!20]{?};}
\sbox\rbl{\tikz\node[dot=green]{};}
\sbox\rbm{\tikz\node[dot=yellow]{};}
\sbox\rbh{\tikz\node[dot=red]{};}
\begin{tikzpicture}
  \matrix[
     matrix of nodes,
     row sep=-\pgflinewidth,
     column sep=-\pgflinewidth,
     nodes={draw,inner sep=.3333em},
     inner sep=0pt
  ](m){
     \usebox\rbu & \usebox\rbl & \usebox\rbl \\
     \usebox\rbl & \usebox\rbu & \usebox\rbl \\
     \usebox\rbh & \usebox\rbm & \usebox\rbl \\
  };

  \foreach[count=\r] \text in{
       Text A,
       längerer Text B,
       Text C
     }\node[anchor=east]at(m-\r-1.west-|m.west){\text};

  \foreach[count=\c] \text in{
       foobar test,
       etwas anderes,
       lipsum swääg
     }\node[rotate=45,anchor=5]at(m-1-\c.south|-m.south){\text};
\end{tikzpicture}
\end{document}
Beim Rotieren von Nodes ist zu beachten, dass sich zum Beispiel der north east Anker des Nodes nach der Rotation relativ zur Nodeform immer noch an der selben Stelle befindet.
\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  [
    box/.style={#1,draw,minimum width=3cm,minimum height=1cm},
    box/.default=black
  ]
  \coordinate(O)at(0,0);
  \node[box,anchor=north east](n)at(O){};
  \node[circle,fill,inner sep=1pt] at(n.north east){x};
  \node[box=red,rotate=45,anchor=north east](r)at(O){};
  \node[fill,red,inner sep=1.5pt]at(r.north east){};
\end{tikzpicture}
\end{document}
Bild
Dateianhänge
gl_rotation.png
gl_rotation.png (3.07 KiB) 1307 mal betrachtet

von Gast » Do 9. Jun 2016, 16:09

Matrix wäre in der Tat besser. Anderenfalls musst du selbst dafür sorgen, dass die einzelnen Elemente wirklich untereinander stehen. Ich habe das hier mal dadurch vereinfacht:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,calc}
\usepackage[utf8]{inputenc}
\begin{document}
\begin{tikzpicture}
    [every node/.style = draw]
    % erste Spalte sollte eigentlich rechtsbündig sein
    \node (A) {Text A};
    \node (A1) [right=of A] {?};
    \node (A2) [right=of A1] {?};
    \node (B) [below=of A] {Text B};
    \node (B1) [right=of B] {?};
    \node (B2) [right=of B1] {?};
    \node (C) [below=of B] {Text C};
    \node (C1) [right=of C] {?};
    \node (C2) [right=of C1] {?};

    \node (X) [below=of C1,rotate=45,anchor=north east] {foobar test};
    \node (Y) [below=of C2,rotate=45,anchor=north east] {lipsum swääg};
\end{tikzpicture}
\end{document}

45° rotierter Text als Spaltenüberschrift

von MoonKid » Do 9. Jun 2016, 15:57

Es ist mal wieder schwierig das Problem in ein paar Worten im Titel zu erklären. ;)

Beispiel Bild

Jede Spalte dort hat eine um 45° rotierten Überschrift (bzw. Unterschrift, da sie in der letzten Zeile steht). Das möchte ich auch.

So einfach, wie ich dachte, ist es aber scheinbar nicht.
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,calc}

\begin{document}
\begin{tikzpicture}
    [every node/.style = draw]
    % erste Spalte sollte eigentlich rechtsbündig sein
    \node (A) {Text A};
    \node (A1) [right=of A] {?};
    \node (A2) [right=of A1] {?};
    \node (B) [below=of A] {längerer Text B};
    \node (B1) [right=of B] {?};
    \node (B2) [right=of B1] {?};
    \node (C) [below=of B] {nur C};
    \node (C1) [right=of C] {?};
    \node (C2) [right=of C1] {?};

    % das hier ginge wahlweise auch in der ersten Zeile, ebenfalls rechtsbündig
    \node (X) [below=of C1,transform canvas={rotate=45}] {foobar test};
    \node (Y) [below=of C2,rotate=45,anchor=north] {lipsum swääg};
\end{tikzpicture}
\end{document}
Nebenbei möchte ich den Text in der ersten Spalte auch rechtsbündig ausgerichtet haben. Vermutlich wäre hier die Lösung mit einer Matrix angebracht?Wollte das Beispiel jetzt aber nicht verkomplizieren. Der Fokus lieft auf dem rotierten Text.

Nach oben