外部で計算されたハル ノードに基づいて、プロットにハルを描画しようとしています。このために、\closedcycle
対応するポイントで囲まれたハルを塗りつぶすためにを使用します。
最初の船体は 4 つのデータ ポイントに基づいてプロットされ、予想どおりに台形の船体形状 (黄色の塗りつぶし) になります。
2 番目の船体の形状はかなり不規則で、合計 8 つのデータ ポイントで表されます。ただし、黄色の船体に適用されるアプローチを使用すると、2 番目の船体 (青色の塗りつぶし) のプロットは不正確になります。
- 船体は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;