Seite 1 von 2

Probleme mit TikZ - Anpassung eines Würfels

Verfasst: So 12. Mai 2019, 15:28
von nils_trash@hotmail.com
Hallo,

ich sitze aktuell an einer Arbeit für die Uni und möchte meine Grafik gerne ebenfalls in LaTeX erstellen und habe mir dafür über die letzten Tage TikZ angesehen. Ich bekomme den passenden Quelltext nur leider gerade nicht hin, vielleicht kann mir jemand dabei ja helfen.

Mein aktueller Stand:
\documentclass[12pt,a4paper,headsepline]{scrartcl}
\usepackage{tikz}
\begin{document}


\begin{figure}
\centering
\begin{tikzpicture}[scale=3.0,every node/.style={draw=black,circle}]
\node (+++) at (1,1,1) {+\,+\,+};
\node (+-+) at (1,-1,1) {+\,-\,+};
\node (-++) at (-1,1,1) {-\,+\,+};
\node (--+) at (-1,-1,1) {--\,--\,+};
\node (++-) at (1,1,-1) {+\,+\,-};
\node (+--) at (1,-1,-1) {+\,-\,-};
\node (-+-) at (-1,1,-1) {-\,+\,-};
\node (---) at (-1,-1,-1) {-\,-\,-}; 
\newcommand*\kante{1}
\path[scale=\kante]
  (-1,-0.8,2)  coordinate  (Y1)
  (-1,1.5,2)  coordinate  (Y2);
%Kanten
\draw[font=\normalsize]
  (-++) -- (--+)
  (--+) -- (+-+)
  (-++) -- (+++)
  (+++) -- (+-+)
  (-++) -- (-+-)
  (+++) -- (++-)
  (+-+) -- (+--)
  (+--) -- (++-)
  (-+-) -- (++-);
\draw[->, thick]  (Y1) -- node[sloped,above] {Effekt A} (Y2)
;
%\shade[ball color=green] (+++) circle (0.2);
%\shade[ball color=green] (--+) circle (0.2);
\draw[dashed, very thin]
(--+) -- (---)
(---) -- (+--)
(---) -- (-+-);
\end{tikzpicture}
\caption{Test}
\end{figure}

\end{document}

Ich hätte gerne alle Eckpunkte als Kugeln dargestellt, die jeweils einzeln unterschiedlich eingefärbt werden können (so wie ich es mit dem auskommentierten Teil bereits hinbekommen hatte, jedoch weiß ich noch nicht wie ich dann eine Beschriftung wieder hinbekomme)

Weiterhin würde ich gerne zwei weitere Achsen einfügen und diese ordentlich beschriften (Effekt B und Effekt C). Dabei soll die Beschriftung nicht als Kreis sein, sondern ganz normal (ich weiß, aktuell ist sie wegen dem der Definition von node noch so, ich habe leider aber gerade noch keine bessere Idee wegen den Kreisen)

Vielleicht kann mir ja jemand helfen. Vielen Dank!

P.S. Vielleicht hat jemand auch eine Idee, wie die Pfeile optisch besser aussehen und die Kugeln gleich groß sind.

Verfasst: So 12. Mai 2019, 16:46
von Bartman
Ein paar Änderungsvorschläge zu Deinem Beispiel:
\documentclass[tikz, border=5pt]{standalone}
\usetikzlibrary{arrows.meta, calc}

\begin{document}
\begin{tikzpicture}[
    >=Stealth,
    scale=3.0,
    font=\sffamily,
    colored ball/.style={draw, circle, ball color=#1, minimum width=1.3cm},
    colored ball/.default=yellow
]
\node [colored ball=green] (+++) at (1,1,1)    {+\,+\,+};
\node [colored ball]       (+-+) at (1,-1,1)   {+\,--\,+};
\node [colored ball=green] (-++) at (-1,1,1)   {--\,+\,+};
\node [colored ball]       (--+) at (-1,-1,1)  {--\,--\,+};
\node [colored ball=green] (++-) at (1,1,-1)   {+\,+\,--};
\node [colored ball]       (+--) at (1,-1,-1)  {+\,--\,--};
\node [colored ball=green] (-+-) at (-1,1,-1)  {--\,+\,--};
\node [colored ball]       (---) at (-1,-1,-1) {--\,--\,--};

%Kanten
\draw
  (-++) -- (--+)
  (--+) -- (+-+)
  (-++) -- (+++)
  (+++) -- (+-+)
  (-++) -- (-+-)
  (+++) -- (++-)
  (+-+) -- (+--)
  (+--) -- (++-)
  (-+-) -- (++-)
;
\draw[->, thick]  
    ($(--+) + (-0.4, -0.2, 0)$) -- 
    node [sloped, above] {Effekt A} 
    ($(-++) + (-0.4, 0.1, 0)$)
;
\draw[dashed, very thin]
    (--+) -- (---)
    (---) -- (+--)
    (---) -- (-+-)
;
\end{tikzpicture}
\end{document}

Verfasst: So 12. Mai 2019, 17:37
von nils_trash@hotmail.com
Vielen Dank für die schnelle Hilfe :)

Aus welchem Grund sollte ich die Dokumentklasse ändern?
Ich würde die Abbildung gerne direkt in meine Arbeit einfügen, oder ist dies nicht zu empfehlen?

Verfasst: So 12. Mai 2019, 18:01
von Bartman
Ich habe die Dokumentklasse nur für das Beispiel gewechselt, weil Deine Wünsche allein die Zeichnung betreffen.

Die Kugeln sind wegen meiner nachträglichen Ergänzung der Option minimum width nun auch gleich groß.

Zustand eines Themas

Verfasst: So 19. Mai 2019, 17:48
von nils_trash@hotmail.com
Vielen Dank für die Hilfe.

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?

Information aus erster Hand

Verfasst: So 19. Mai 2019, 20:37
von Ratgeber
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.

Verfasst: So 19. Mai 2019, 21:18
von Bartman
Außerdem solltest Du auch noch die Einleitung des Abschnitts 17.11 Connecting Nodes: Using Nodes as Coordinates und zumindest den Anfang des Kapitels 45 Background Library lesen.

Es gibt zudem mehr als eine Möglichkeit, die Option für die Transparenz für mehrere Pfade etwas zusammenzufassen. Eine bietet die Option every path aus dem Kapitel 14 Syntax for Path Specifications mit der Umgebung scope aus dem Abschnitt 12.3.1 The Scope Environment.

Re: Information aus erster Hand

Verfasst: So 19. Mai 2019, 22:21
von nils_trash@hotmail.com
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}

Verfasst: So 19. Mai 2019, 23:03
von Bartman
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.

Verfasst: Mo 20. Mai 2019, 00:29
von nils_trash@hotmail.com
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?