외부에서 계산된 선체 노드를 기반으로 한 플롯에서 선체를 설명하려고 합니다. 이를 위해 \closedcycle
해당 점으로 둘러싸인 선체를 채우는 데 사용합니다.
첫 번째 선체는 4개의 데이터 포인트를 기반으로 플롯되어 예상대로 다소 사다리꼴 선체 모양이 됩니다(노란색 채우기).
두 번째 선체는 다소 불규칙한 모양을 갖고 있으며 총 8개의 데이터 포인트로 설명됩니다. 그러나 노란색 선체에 대해 작동하는 접근 방식을 사용하면 두 번째 선체(파란색 채우기)에 대해 잘못된 플롯이 생성됩니다.
- 선체가 x축까지 확장된 것처럼 보입니다.
- x축까지 확장된 섹션이 선체 채우기에서 누락되었습니다.
- 설명을 위해 플롯된 데이터 포인트(파란색 선체의 오른쪽 상단에서 누락된 선체 섹션을 보려면 이 플롯을 주석 처리)에 표시된 대로 선체가 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;