곡선으로 둘러싸인 영역 색칠하기

곡선으로 둘러싸인 영역 색칠하기

곡선으로 둘러싸인 영역을 색칠하려고 할 때 문제가 발생했습니다 \sigma^{(0)}, \sigma^{(1)}, \sigma^{(0)}. 명령어를 사용했는데 꼭지점 , , \draw[fill=red!30, opacity=.5] (h2)--(h3)--(h4)--cycle; 3개로 구성된 삼각형만 색칠되어 있습니다 . 아래 이미지와 같습니다.v_0v_1v_2

여기에 이미지 설명을 입력하세요

이것은 내 코드입니다

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

이 문제를 어떻게 해결할 수 있나요? 누구든지 나에게 아이디어를 줄 수 있습니까?

답변1

당신이 사용할 수있는:

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

여기에 이미지 설명을 입력하세요

답변2

Bobydbob은 이미 해당 영역을 채우는 방법을 보여 주었으므로 이것은 코드에 대한 몇 가지 추가 메모가 포함된 일종의 주석에 가깝습니다.

  • 페이지 여백 등을 변경하려면 일반적으로 geometry길이를 수동으로 설정하는 대신 패키지를 사용해야 합니다. 즉, 다음과 같은 것을 사용하십시오.

    \usepackage[
      textwidth=6.2in,
      textheight=8.7in,
      headsep=26pt
      ]{geometry}
    
  • 패키지 epsfig는 로 대체되므로 graphicx사용할 필요가 없습니다. (요즘에는 어쨌든 단지 래퍼일 뿐입니다 .) 파일을 graphicx포함해야 하는 경우 평소처럼 를 사용하십시오..eps\includegraphics{filename}

  • 여러 TikZ 라이브러리를 두 번 로드하고 있는데 이는 필요하지 않습니다. 그리고 한 곳에서는 대신 \usetikzlibrary[..]\usetikzlibrary{..}(아직 분명히 작동하지만 후자는 문서화된 접근 방식입니다).
  • 최소한의 예에 관한 한, bobyandbob이 언급한 것처럼 아래 코드는 더 최소한입니다. 서문에는 관련 없는 내용이 많이 있습니다.
  • 선과 채우기 후에 점을 그리는 것이 좋습니다.

여기에 이미지 설명을 입력하세요

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

관련 정보