Probleme mit TikZ - Anpassung eines Würfels

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: Probleme mit TikZ - Anpassung eines Würfels

von Bartman » Mo 20. Mai 2019, 23:25

Das ist im Grunde ein neues Thema.

Anstelle des veralteten subfigure kannst Du auch subcaption nehmen. Ersetze \subfigure durch \subcaptionbox und richte den Inhalt der figure-Umgebung mittig aus.

Die gemeinsamen Optionen der drei tikzpicture-Umgebungen dürfen mit der Hilfe des Befehls \tikzset am Anfang der figure-Umgebung stehen.

von nils_trash@hotmail.com » Mo 20. Mai 2019, 22:54

Vielen Dank, es passt perfekt.


Ich sitze aktuell noch an der Unterschrift (wollte 3 Würfel nebeneinander setzen)

Wenn ich das ganze über minipage realisiere stimmen zwar die Abstände, jedoch bekomme ich eine Fehlermeldung wenn ich eine Unterschrift über caption einfügen möchte.

Wenn ich das ganze über subfigure realisiere passen zwar die Bildunterschriften, jedoch sind die 3 Würfel nicht gleichmäßig verteilt. Gibt es hierfür einen Lösungsvorschlag?
\begin{figure}[h!] 
    \subfigure[Unterschrift links]{\begin{tikzpicture}[ 
    >=Stealth, 
    font=\sffamily, 
    colored ball/.style={draw, circle, ball color=#1, minimum width=0.5cm}, 
    colored ball/.default=yellow 
]
% Koordinaten
\path%[scale=3]
  foreach \x/\y/\z in 
    {+/+/+, +/-/+, -/+/+, -/-/+, +/+/-, +/-/-, -/+/-, -/-/-}
    {(\x1,\y1,\z1) coordinate (\x\y\z)}
;
% Flächen
\begin{scope}[opacity=0.3]
  \fill[blue] (-++) -- (-+-) -- (---) -- (--+) -- cycle;
  \fill[red]  (+++) -- (++-) -- (+--) -- (+-+) -- cycle;
\end{scope}

%Kanten 
\path
  (-++) edge (+++) edge (--+) edge (-+-)
  (++-) edge (-+-) edge (+--) edge (+++)
  (+-+) edge (--+) edge (+++) edge (+--)
;
\path [dashed,thin]
  (---) edge (+--) edge (-+-) edge (--+)
;
% Ecken
\path
  foreach[count=\i] \c/\ballcolor in 
    {+++/red, ++-/red, +-+/red, +--/red, -++/blue, -+-/blue, --+/blue}
    {(\c)node
      [preaction={fill=white, opacity=1}]
      [colored ball=\ballcolor, opacity=.5, text opacity=1]
      (y\i)
      {y$_\i$}
    }
;
\path
  foreach[count=\i] \c/\ballcolor in 
    {---/blue}
    {(\c)node
      [preaction={fill=white, opacity=0.75}]
      [colored ball=\ballcolor, opacity=.5, text opacity=1]
      (y\i)
      {y$_8$}
    }
;
\end{tikzpicture}}
    \subfigure[Unterschrift mitte]{\begin{tikzpicture}[ 
    >=Stealth, 
    font=\sffamily, 
    colored ball/.style={draw, circle, ball color=#1, minimum width=0.5cm}, 
    colored ball/.default=yellow 
]
% Koordinaten
\path%[scale=3]
  foreach \x/\y/\z in 
    {+/+/+, +/-/+, -/+/+, -/-/+, +/+/-, +/-/-, -/+/-, -/-/-}
    {(\x1,\y1,\z1) coordinate (\x\y\z)}
;
% Flächen
\begin{scope}[opacity=0.3]
  \fill[blue] (+-+) -- (+--) -- (---) -- (--+) -- cycle;
  \fill[red]  (+++) -- (++-) -- (-+-) -- (-++) -- cycle;
\end{scope}

%Kanten 
\path
  (-++) edge (+++) edge (--+) edge (-+-)
  (++-) edge (-+-) edge (+--) edge (+++)
  (+-+) edge (--+) edge (+++) edge (+--)
;
\path [dashed,thin]
  (---) edge (+--) edge (-+-) edge (--+)
;
% Ecken
\path
  foreach[count=\i] \c/\ballcolor in 
    {+++/red, ++-/red, +-+/blue, +--/blue, -++/red, -+-/red, --+/blue}
    {(\c)node
      [preaction={fill=white, opacity=1}]
      [colored ball=\ballcolor, opacity=.5, text opacity=1]
      (y\i)
      {y$_\i$}
    }
;
\path
  foreach[count=\i] \c/\ballcolor in 
    {---/blue}
    {(\c)node
      [preaction={fill=white, opacity=0.75}]
      [colored ball=\ballcolor, opacity=.5, text opacity=1]
      (y\i)
      {y$_8$}
    }
;
\end{tikzpicture}}
    \subfigure[Unterschrift rechts]{\begin{tikzpicture}[ 
    >=Stealth, 
    font=\sffamily, 
    colored ball/.style={draw, circle, ball color=#1, minimum width=0.5cm}, 
    colored ball/.default=yellow 
]
% Koordinaten
\path%[scale=3]
  foreach \x/\y/\z in 
    {+/+/+, +/-/+, -/+/+, -/-/+, +/+/-, +/-/-, -/+/-, -/-/-}
    {(\x1,\y1,\z1) coordinate (\x\y\z)}
;
% Flächen
\begin{scope}[opacity=0.3]
  \fill[blue] (++-) -- (+--) -- (---) -- (-+-) -- cycle;
  \fill[red]  (+++) -- (+-+) -- (--+) -- (-++) -- cycle;
\end{scope}

%Kanten 
\path
  (-++) edge (+++) edge (--+) edge (-+-)
  (++-) edge (-+-) edge (+--) edge (+++)
  (+-+) edge (--+) edge (+++) edge (+--)
;
\path [dashed,thin]
  (---) edge (+--) edge (-+-) edge (--+)
;
% Ecken
\path
  foreach[count=\i] \c/\ballcolor in 
    {+++/red, ++-/blue, +-+/red, +--/blue, -++/red, -+-/blue, --+/red}
    {(\c)node
      [preaction={fill=white, opacity=1}]
      [colored ball=\ballcolor, opacity=.5, text opacity=1]
      (y\i)
      {y$_\i$}
    }
;
\path
  foreach[count=\i] \c/\ballcolor in 
    {---/blue}
    {(\c)node
      [preaction={fill=white, opacity=0.75}]
      [colored ball=\ballcolor, opacity=.5, text opacity=1]
      (y\i)
      {y$_8$}
    }
;
\end{tikzpicture}} 
\caption{Bildunterschrift unter alle}
\label{Verlinkung} 
\end{figure}

von esdd » Mo 20. Mai 2019, 13:43

Mir ist nicht klar, wie die Markierung der Ecken aussehen soll.
\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}[ 
    >=Stealth, 
    font=\sffamily, 
    colored ball/.style={draw, circle, ball color=#1, minimum width=0.5cm}, 
    colored ball/.default=yellow 
]
% Koordinaten
\path%[scale=3]
  foreach \x/\y/\z in 
    {+/+/+, +/-/+, -/+/+, -/-/+, +/+/-, +/-/-, -/+/-, -/-/-}
    {(\x1,\y1,\z1) coordinate (\x\y\z)}
;
% Flächen
\begin{scope}[opacity=0.3]
  \fill[blue] (++-) -- (+--) -- (---) -- (-+-) -- cycle;
  \fill[red]  (+++) -- (+-+) -- (--+) -- (-++) -- cycle;
\end{scope}

%Kanten 
\path
  (-++) edge (+++) edge (--+) edge (-+-)
  (++-) edge (-+-) edge (+--) edge (+++)
  (+-+) edge (--+) edge (+++) edge (+--)
;
\path [dashed,thin]
  (---) edge (+--) edge (-+-) edge (--+)
;
% Ecken
\path
  foreach[count=\i] \c/\ballcolor in 
    {+++/red, ++-/blue, +-+/red, +--/blue, -++/red, -+-/blue, --+/red, ---/blue}
    {(\c)node
      [preaction={fill=white, opacity=1}]
      [colored ball=\ballcolor, opacity=.5, text opacity=1]
      (y\i)
      {y$_\i$}
    }
;
\end{tikzpicture}
\end{document}
Bild

Wenn die Ecken dann doch etwas durchsichtig sein sollen, dann kannst Du opacity in der preaction etwas anpassen, zum Beispiel
[preaction={fill=white, opacity=.75}]
Bild
Dateianhänge
gl_wuerfel1.png
gl_wuerfel1.png (50.66 KiB) 3289 mal betrachtet
gl_wuerfel2.png
gl_wuerfel2.png (70 KiB) 3325 mal betrachtet

von nils_trash@hotmail.com » Mo 20. Mai 2019, 12:25

Besonders deutlich ist es in diesem Fall:

\begin{tikzpicture}[ 
    >=Stealth, 
    scale=1.0, 
font=\sffamily, 
    colored ball/.style={draw, circle, ball color=#1, minimum width=0.5cm}, 
    colored ball/.default=yellow
] 
\node [colored ball=red,opacity=0.5] (+++) at (1,1,1) {y$_1$};
\node [colored ball=blue,opacity=0.5] (++-) at (1,1,-1) {y$_2$}; 
\node [colored ball=red,opacity=0.5] (+-+) at (1,-1,1) {y$_3$};
\node [colored ball=blue,opacity=0.5] (+--) at (1,-1,-1) {y$_4$}; 
\node [colored ball=red,opacity=0.5] (-++) at (-1,1,1) {y$_5$};
\node [colored ball=blue,opacity=0.5] (-+-) at (-1,1,-1) {y$_6$}; 
\node [colored ball=red,opacity=0.5] (--+) at (-1,-1,1) {y$_7$};
\node [colored ball=blue,opacity=0.5] (---) at (-1,-1,-1) {y$_8$}; 
%\newcommand*\kante{1} 
%Kanten 
\draw%[font=\normalsize] 
  (-++) -- (--+) 
  (--+) -- (+-+) 
  (-++) -- (+++) 
  (+++) -- (+-+) 
  (-++) -- (-+-) 
  (+++) -- (++-) 
  (+-+) -- (+--) 
  (+--) -- (++-) 
  (-+-) -- (++-) 
;   
\draw[dashed, very thin] 
    (--+) -- (---) 
    (---) -- (+--) 
    (---) -- (-+-);
\fill[red,opacity=0.3] (+++.center) -- (+-+.center) -- (--+.center) -- (-++.center);
\fill[blue,opacity=0.3] (++-.center) -- (+--.center) -- (---.center) -- (-+-.center);  
\end{tikzpicture}

von nils_trash@hotmail.com » Mo 20. Mai 2019, 11:57

Vielen Dank für die Hilfe. Ich hatte unter 17.11 nachgelesen

"You can also just use (x) as a coordinate. In most cases, this gives the same coordinate as (x.center)."

Vielen Dank für die Korrektur.

Ich hätte jetzt lediglich das Problem, dass sich die Intensität an den Kreisen addiert. Besteht eine Möglichkeit dies zu verhindern?
\begin{tikzpicture}[ 
    >=Stealth, 
    scale=1.0, 
font=\sffamily, 
    colored ball/.style={draw, circle, ball color=#1, minimum width=0.6cm}, 
    colored ball/.default=yellow
] 
\node [colored ball=red,opacity=0.5] (+++) at (1,1,1) {y$_1$};
\node [colored ball=red,opacity=0.5] (++-) at (1,1,-1) {y$_2$}; 
\node [colored ball=red,opacity=0.5] (+-+) at (1,-1,1) {y$_3$};
\node [colored ball=red,opacity=0.5] (+--) at (1,-1,-1) {y$_4$}; 
\node [colored ball=blue,opacity=0.5] (-++) at (-1,1,1) {y$_5$};
\node [colored ball=blue,opacity=0.5] (-+-) at (-1,1,-1) {y$_6$}; 
\node [colored ball=blue,opacity=0.5] (--+) at (-1,-1,1) {y$_7$};
\node [colored ball=blue,opacity=0.5] (---) at (-1,-1,-1) {y$_8$}; 
%\newcommand*\kante{1} 
%Kanten 
\draw%[font=\normalsize] 
  (-++) -- (--+) 
  (--+) -- (+-+) 
  (-++) -- (+++) 
  (+++) -- (+-+) 
  (-++) -- (-+-) 
  (+++) -- (++-) 
  (+-+) -- (+--) 
  (+--) -- (++-) 
  (-+-) -- (++-) 
;   
\draw[dashed, very thin] 
    (--+) -- (---) 
    (---) -- (+--) 
    (---) -- (-+-);
\fill[red,opacity=0.3] (+++.center) -- (++-.center) -- (+--.center) -- (+-+.center);
\fill[blue,opacity=0.3] (-++.center) -- (-+-.center) -- (---.center) -- (--+.center);  
\end{tikzpicture}

von u_fischer » Mo 20. Mai 2019, 11:19

nils_trash@hotmail.com hat geschrieben: Ich sitze aktuell daran einzelne Flächen einzufärben, hierfür wollte ich eigentlich

\draw[fill=yellow,opacity=0.6]

verwenden, jedoch bleibt die gewünschte Färbung der Fläche aus. Woran kann dies liegen, bzw. wie müsste ich den Code dafür anpassen?
Du verbindest Knoten und nicht Koordinaten. Das gibt keine geschlossenen Kurven:
\documentclass{article}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}[]
\node  (A) at (0,0) {A};
\node  (B) at (1,1) {B};
\node  (C) at (0,1) {C};
\filldraw[red](A)--(B)--(C)--(A);

\end{tikzpicture} 

\begin{tikzpicture}[]
\node  (A) at (0,0) {A};
\node  (B) at (1,1) {B};
\node  (C) at (0,1) {C};
\filldraw[red](A.center)--(B.center)--(C.center)--cycle;
\end{tikzpicture}


\end{document}

von Bartman » Mo 20. Mai 2019, 01:14

Ein Teil meines erwähnten Beitrages handelt von Verbesserungen.

von nils_trash@hotmail.com » Mo 20. Mai 2019, 00:29

Bartman hat geschrieben:Hast Du meinen letzten Beitrag gelesen?

Wenn der Buchstabe und der Index der Beschriftung in serifenloser Schrift sein sollen, dann solltest Du das Paket sansmath laden und die Einstellung der Schrift in font=\sansmath ändern. Die Knoten werden dann z. B. mit $\mathrm{y}_1$ beschriftet.

Für die gestrichelte Andeutung der nicht sichtbaren Kanten des Würfels könntest Du diese entweder in einem Grauton färben oder die Option opacity benutzen.
Ja habe ich, jedoch geht es bei deinen Anmerkungen doch eher um das verbessern des Codes als die Färbung der Flächen, oder?

von Bartman » So 19. Mai 2019, 23:03

Hast Du meinen letzten Beitrag gelesen?

Wenn der Buchstabe und der Index der Beschriftung in serifenloser Schrift sein sollen, dann solltest Du das Paket sansmath laden und die Einstellung der Schrift in font=\sansmath ändern. Die Knoten werden dann z. B. mit $\mathrm{y}_1$ beschriftet.

Für die gestrichelte Andeutung der nicht sichtbaren Kanten des Würfels könntest Du diese entweder in einem Grauton färben oder die Option opacity benutzen.

Re: Information aus erster Hand

von nils_trash@hotmail.com » So 19. Mai 2019, 22:21

Ratgeber hat geschrieben:
nils_trash@hotmail.com hat geschrieben:[…] Ich sitze aktuell daran einzelne Flächen einzufärben, hierfür wollte ich eigentlich […] verwenden, jedoch bleibt die gewünschte Färbung der Fläche aus. Woran kann dies liegen, bzw. wie müsste ich den Code dafür anpassen?
Dann lies mal Abschnitt 15.5 in der Anleitung von »pgf/TikZ«. Da liefert schon die Einleitung ein passendes Beispiel.
Wenn ich mich nicht irre habe ich es wie in dem Minibeispiel versucht.
\begin{tikzpicture}[ 
    >=Stealth, 
    scale=1.0, 
font=\sffamily, 
    colored ball/.style={draw, circle, ball color=#1, minimum width=0.6cm}, 
    colored ball/.default=yellow
] 
\node [colored ball] (+++) at (1,1,1) {y$_1$};
\node [colored ball] (++-) at (1,1,-1) {y$_2$}; 
\node [colored ball] (+-+) at (1,-1,1) {y$_3$};
\node [colored ball] (+--) at (1,-1,-1) {y$_4$}; 
\node [colored ball] (-++) at (-1,1,1) {y$_5$};
\node [colored ball] (-+-) at (-1,1,-1) {y$_6$}; 
\node [colored ball] (--+) at (-1,-1,1) {y$_7$};
\node [colored ball] (---) at (-1,-1,-1) {y$_8$}; 
%\newcommand*\kante{1} 
%Kanten 
\draw%[font=\normalsize] 
  (-++) -- (--+) 
  (--+) -- (+-+) 
  (-++) -- (+++) 
  (+++) -- (+-+) 
  (-++) -- (-+-) 
  (+++) -- (++-) 
  (+-+) -- (+--) 
  (+--) -- (++-) 
  (-+-) -- (++-) 
;   
\draw[dashed, very thin] 
    (--+) -- (---) 
    (---) -- (+--) 
    (---) -- (-+-);
\fill[red] (+++) -- (++-) -- (+--) -- (+-+); 
\end{tikzpicture}

Nach oben