Ich habe ein Problem, wenn ich den durch Kurven begrenzten Bereich einfärben möchte \sigma^{(0)}, \sigma^{(1)}, \sigma^{(0)}
. Ich verwende den Befehl \draw[fill=red!30, opacity=.5] (h2)--(h3)--(h4)--cycle;
, aber es wird nur das Dreieck eingefärbt, das aus den drei Eckpunkten v_0
, v_1
, besteht v_2
. Wie im Bild unten:
Das ist mein Code
\documentclass[12pt]{article}
\usepackage{epsfig,psfrag}
\usepackage{amsmath,amsxtra,amssymb,latexsym,amscd,amsthm}
\usepackage[linesnumbered,ruled,vlined]{algorithm2e}
\usepackage{graphicx}
\setlength{\textwidth}{6.2in}
\setlength{\oddsidemargin}{0.3in}
\setlength{\evensidemargin}{0in}
\setlength{\textheight}{8.7in}
\setlength{\voffset}{-.7in}
\setlength{\headsep}{26pt}
\setlength{\parindent}{10pt}
\usepackage{epic}
\usepackage{curves}
\usepackage{tikz, tikz-3dplot, pgfplots}
\usepackage{tkz-graph}
\usetikzlibrary{calc,arrows.meta}
\usetikzlibrary{shapes.geometric,calc}
\usetikzlibrary[positioning,patterns]
\usetikzlibrary{decorations.markings}
\usetikzlibrary{arrows}
\usetikzlibrary{arrows,calc,shapes,decorations.pathreplacing}
\usepackage{tikz-cd}
\usepackage{young}
\usepackage[vcentermath]{youngtab}
\begin{document}
\begin{tikzpicture}
[decoration={markings,mark=at position 0.5 with {\arrow{>}}},
witharrow/.style={postaction={decorate}},
shorten <>/.style={shorten <=#1,shorten >=#1},
dot/.style={radius=2pt}
]
% ellipse
\begin{scope}
\fill
(-2,0) coordinate (h1) circle[dot] node[left](k1){$q$}
(2,0) coordinate (h2) circle[dot] node[below](k2){$v_0$}
(4,2) coordinate (h3) circle[dot] node[above](k3){$v_2$}
(5,-2) coordinate (h4) circle[dot] node[below](p3){$v_1$}
(0,0) coordinate (a3) node[left](p3){}
(5,0.5) coordinate (b3) node[right]{}
(1,-0.5) coordinate (c3) node[right]{};
\draw[bend right=20,witharrow] (h1) to node [anchor=south]{$\alpha(v_0)$} (h2);
\draw[bend left=30,witharrow] (h1) to node [anchor=south]{$\alpha(v_2)$} (h3);
\draw[bend right=30,witharrow] (h1) to node [anchor=north]{$\alpha(v_1)$} (h4);
\draw[bend right=30,witharrow] (h2) to node [anchor=south]{$\sigma^{(1)}$} (h3);
\draw[bend left=20,witharrow] (h2) to node [anchor=north]{$\sigma^{(2)}$} (h4);
\draw[bend left=25,witharrow] (h3) to node [anchor=west]{$\sigma^{(0)}$} (h4);
\draw ($0.5*(a3)+0.5*(b3)$) circle[x radius=6,y radius=4];
\node at ($(a3)+(6,2.5)$) (X3) {$X$};
\draw[fill=red!30, opacity=.5] (h2)--(h3)--(h4)--cycle;
\end{scope}
\end{tikzpicture}
\end{document}
Wie kann ich dieses Problem beheben? Kann mir jemand eine Idee geben?
Antwort1
Sie können verwenden:
\path [fill=red!30, opacity=.5] (h2) to [ bend right=30] (h3) to [ bend left=25] (h4) to [ bend right=20] (h2);
MWE:
\documentclass[12pt]{article}
\usepackage{epsfig,psfrag}
\usepackage{amsmath,amsxtra,amssymb,latexsym,amscd,amsthm}
\usepackage[linesnumbered,ruled,vlined]{algorithm2e}
\usepackage{graphicx}
\setlength{\textwidth}{6.2in}
\setlength{\oddsidemargin}{0.3in}
\setlength{\evensidemargin}{0in}
\setlength{\textheight}{8.7in}
\setlength{\voffset}{-.7in}
\setlength{\headsep}{26pt}
\setlength{\parindent}{10pt}
\usepackage{epic}
\usepackage{curves}
\usepackage{tikz, tikz-3dplot, pgfplots}
\usepackage{tkz-graph}
\usetikzlibrary{calc,arrows.meta}
\usetikzlibrary{shapes.geometric,calc}
\usetikzlibrary[positioning,patterns]
\usetikzlibrary{decorations.markings}
\usetikzlibrary{arrows}
\usetikzlibrary{arrows,calc,shapes,decorations.pathreplacing}
\usepackage{tikz-cd}
\usepackage{young}
\usepackage[vcentermath]{youngtab}
\begin{document}
\begin{tikzpicture}
[decoration={markings,mark=at position 0.5 with {\arrow{>}}},
witharrow/.style={postaction={decorate}},
shorten <>/.style={shorten <=#1,shorten >=#1},
dot/.style={radius=2pt}
]
\begin{scope}
\fill
(2,0) coordinate (h2) circle[dot] node[below](k2){$v_0$}
(4,2) coordinate (h3) circle[dot] node[above](k3){$v_2$}
(5,-2) coordinate (h4) circle[dot] node[below](p3){$v_1$};
\draw[bend right=30,witharrow] (h2) to node [anchor=south]{$\sigma^{(1)}$} (h3);
\draw[bend left=20,witharrow] (h2) to node [anchor=north]{$\sigma^{(2)}$} (h4);
\draw[bend left=25,witharrow] (h3) to node [anchor=west]{$\sigma^{(0)}$} (h4);
\path [fill=red!30, opacity=.5] (h2) to [ bend right=30] (h3) to [ bend left=25] (h4) to [ bend right=20] (h2);
\end{scope}
\end{tikzpicture}
\end{document}
Antwort2
Bobyandbob hat Ihnen bereits gezeigt, wie Sie diesen Bereich ausfüllen, daher handelt es sich hierbei eher um einen Kommentar mit einigen zusätzlichen Anmerkungen zu Ihrem Code.
Um Seitenränder usw. zu ändern, sollten Sie im Allgemeinen das
geometry
Paket verwenden, anstatt die Längen wie hier manuell festzulegen. Verwenden Sie also etwas wie\usepackage[ textwidth=6.2in, textheight=8.7in, headsep=26pt ]{geometry}
Das
epsfig
Paket wird durch ersetztgraphicx
, es besteht kein Grund, es zu verwenden. (Heutzutage ist es sowieso nur ein Wrapper .) Wenn Sie Dateiengraphicx
einschließen müssen , verwenden Sie wie üblich ..eps
\includegraphics{filename}
- Sie laden mehrere TikZ-Bibliotheken zweimal, was nicht notwendig ist. Und an einer Stelle haben Sie
\usetikzlibrary[..]
stattdessen\usetikzlibrary{..}
(es funktioniert anscheinend immer noch, aber letzteres ist der dokumentierte Ansatz). - Was Minimalbeispiele betrifft, ist der folgende Code eher minimal, da Ihre Präambel, wie bobyandbob erwähnt, eine Menge irrelevantes Zeug enthält.
- Ich würde vorschlagen, die Punkte nach den Linien und der Füllung zu zeichnen.
\documentclass[12pt]{article}
\usepackage{tikz}
\usetikzlibrary{decorations.markings,calc}
\begin{document}
\begin{tikzpicture}
[decoration={markings,mark=at position 0.5 with {\arrow{>}}},
witharrow/.style={postaction={decorate}},
shorten <>/.style={shorten <=#1,shorten >=#1},
dot/.style={radius=2pt}
]
\fill
(-2,0) coordinate (h1) node[left](k1){$q$}
(2,0) coordinate (h2) node[below](k2){$v_0$}
(4,2) coordinate (h3) node[above](k3){$v_2$}
(5,-2) coordinate (h4) node[below](p3){$v_1$}
(0,0) coordinate (a3)
(5,0.5) coordinate (b3)
(1,-0.5) coordinate (c3);
\fill[red!30,opacity=.5]
(h2) to[bend right=30] (h3)
to[bend left=25] (h4)
to[bend right=20] (h2);
\draw[bend right=20,witharrow] (h1) to node [anchor=south]{$\alpha(v_0)$} (h2);
\draw[bend left=30,witharrow] (h1) to node [anchor=south]{$\alpha(v_2)$} (h3);
\draw[bend right=30,witharrow] (h1) to node [anchor=north]{$\alpha(v_1)$} (h4);
\draw[bend right=30,witharrow] (h2) to node [anchor=south]{$\sigma^{(1)}$} (h3);
\draw[bend left=20,witharrow] (h2) to node [anchor=north]{$\sigma^{(2)}$} (h4);
\draw[bend left=25,witharrow] (h3) to node [anchor=west]{$\sigma^{(0)}$} (h4);
\draw ($0.5*(a3)+0.5*(b3)$) circle[x radius=6,y radius=4];
\node at ($(a3)+(6,2.5)$) (X3) {$X$};
\foreach \x in {h1,h2,h3,h4}
\fill (\x) circle[dot];
\end{tikzpicture}
\end{document}