Pgfplots \closedcycle이 올바르게 채워지지 않았습니다.

Pgfplots \closedcycle이 올바르게 채워지지 않았습니다.

외부에서 계산된 선체 노드를 기반으로 한 플롯에서 선체를 설명하려고 합니다. 이를 위해 \closedcycle해당 점으로 둘러싸인 선체를 채우는 데 사용합니다.

첫 번째 선체는 4개의 데이터 포인트를 기반으로 플롯되어 예상대로 다소 사다리꼴 선체 모양이 됩니다(노란색 채우기).

두 번째 선체는 다소 불규칙한 모양을 갖고 있으며 총 8개의 데이터 포인트로 설명됩니다. 그러나 노란색 선체에 대해 작동하는 접근 방식을 사용하면 두 번째 선체(파란색 채우기)에 대해 잘못된 플롯이 생성됩니다.

  1. 선체가 x축까지 확장된 것처럼 보입니다.
  2. x축까지 확장된 섹션이 선체 채우기에서 누락되었습니다.
  3. 설명을 위해 플롯된 데이터 포인트(파란색 선체의 오른쪽 상단에서 누락된 선체 섹션을 보려면 이 플롯을 주석 처리)에 표시된 대로 선체가 x축까지 확장된 포인트는 기본 데이터 세트의 일부가 아닙니다.

플롯을 생성하기 위한 최소 코드 조각:

\documentclass{article}
\usepackage{filecontents}
\usepackage{pgfplots}


\begin{filecontents}{okay_points.dat}
    hull_x;hull_y
    0.35501086786719216;0.35501086786719216
    0.3501998312158284;0.3501998312158284
    0.3501998312158284;0.0
    0.35501086786719216;0.0
\end{filecontents}

\begin{filecontents}{problematic_points.dat}
    hull_x;hull_y
    0.6268512948297316;0.6591688411952603
    0.3501998312158284;0.3501998312158284
    0.35501086786719216;0.35501086786719216
    0.6278876657471278;0.6560286756711164
    0.6330607325983083;0.6624668180953179
    0.6330598364108084;0.6638809669603063
    0.6322766634159019;0.6639305124049031
    0.6280718253300845;0.6603345843906823
\end{filecontents}


\begin{document}
    \begin{tikzpicture}
        \begin{axis}[
            no markers,
            %
            xmin = 0.25,
            xmax = 0.7,
            ymin = 0.25,
            ymax = 0.7,
            ]

            \pgfplotstableread[col sep=semicolon]{okay_points.dat}\okay
            \pgfplotstableread[col sep=semicolon]{problematic_points.dat}\problem

            % -- okay --
            % use closedcycle to plot hull using data points
            \addplot+[fill=yellow, draw=none] table[x = hull_x, y = hull_y]{\okay}\closedcycle;


            % -- problematic --
            % use closedcycle to plot hull using data points
            \addplot+[fill=blue, draw=none] table[x = hull_x, y = hull_y]{\problem}\closedcycle;
            % --> problem: hull extended to the x-axis (thin line) and filled section missing in upper part of hull

            % plot points to illustrate hull node points
            \addplot+[only marks, mark options = {thin, solid}, gray] table[x = hull_x, y = hull_y]{\problem};
            % --> comment out / disable line to see section missing in upper part of hull (otherwise covered by point markers)
            % --> hull node points do not include values with y < 0.25: Why is filled area extended to x-axis?
        \end{axis}
    \end{tikzpicture}
\end{document}

자세히 설명한 바와 같이, 얻은 플롯에 표시된 파란색 선체는 x축까지 잘못 확장되었으며 해당 채우기에는 해당 영역에 누락된 섹션이 있습니다(따라서 두 문제가 서로 연결되어 있다고 가정합니다).

선체 플롯 채우기 누락

답변1

비고: 이 질문을 해결된 것으로 표시할 수 있도록 @JasperHabicht의 의견을 요약합니다.

-- cylce대신 사용하면 \closedcycle문제가 해결됩니다. 완전성을 위해 관련 코드 줄이 아래에 요약되어 있습니다.


\addplot+[fill=yellow, draw=none] table[x = hull_x, y = hull_y]{\okay}\closedcycle;

된다

\addplot+[fill=yellow, draw=none] table[x = hull_x, y = hull_y]{\okay} -- cycle;

\addplot+[fill=blue, draw=none] table[x = hull_x, y = hull_y]{\problem}\closedcycle;

된다

\addplot+[fill=blue, draw=none] table[x = hull_x, y = hull_y]{\problem} -- cycle;

관련 정보