使用 pgfplotstable 中的資料繪製水平曲線

使用 pgfplotstable 中的資料繪製水平曲線

我有一些來自儲存在一些 csv 檔案中的數值實驗的數據,我使用這些數據將其讀入 LaTeX

\pgfplotstableread{Results/test.csv}\data

這些資料由 x、y 和 z 座標組成,我現在想要繪製 的水平曲線z=1。有幾個人建議使用 gnuplot,例如繪製水平曲線,我嘗試將其用於數據點

\addplot3 [contour gnuplot={levels={1},labels=false,draw color=black}] table[x={x}, y={y}, z={z}]{\data};

我用 --shell-escape 編譯。然而,這不起作用並拋出錯誤

ExponentialSDE.tex(第 497 行)套件 pgfplots 錯誤:抱歉,處理輸入流沒有導致掃描線結束標記;產生的“contour external”臨時檔案不包含其中任何一個(表示矩陣結構遺失)。

我讀到導致此錯誤的一個典型問題是缺少 gnuplot (這是有道理的)。對於我的情況,安裝了 gnuplot,這是我運行時的終端輸出gnuplot

>>gnuplot

    G N U P L O T
    Version 5.2 patchlevel 6    last modified 2019-01-01 

    Copyright (C) 1986-1993, 1998, 2004, 2007-2018
    Thomas Williams, Colin Kelley and many others

    gnuplot home:     http://www.gnuplot.info
    faq, bugs, etc:   type "help FAQ"
    immediate help:   type "help"  (plot window: hit 'h')

您對我做錯的事情有什麼建議嗎?以及如何獲得水平曲線?

完整的MWE

\documentclass[11pt]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{pgfplotstable}

\pgfplotstableread{
 x y z
    -1    -1     2
    -1     0     1
    -1     1     2
     0    -1     1
     0     0     0
     0     1     1
     1    -1     2
     1     0     1
     1     1     2
}{\data}

\begin{document}
%Not working
\begin{tikzpicture}
    \begin{axis}[view={0}{90}]
        \addplot3 [contour gnuplot={levels={1},labels=false,draw color=black}] table[x={x}, y={y}, z={z}]{\data};
    \end{axis}
\end{tikzpicture}

%Test for pgfplotstable is properly read
\begin{tikzpicture}
    \begin{axis}[]
        \addplot table[x={x}, y={y}]{\data};
    \end{axis}
\end{tikzpicture}
\end{document}

答案1

看來我的compat=newest比你的新,因為就我而言,它準確地指示我該怎麼做:

!包 pgfplots 錯誤:抱歉,處理輸入流沒有導致掃描線結束標記;產生的“contour external”臨時檔案不包含其中任何一個(表示矩陣結構遺失)。要解決此問題,您有以下選項: - 將掃描線結束標記插入輸入資料(即空白行), - 提供三個選項中的兩個選項“mesh/rows=、mesh/cols=、mesh/num”點='.

誰會拒絕遵循如此明確的指示呢? ;-) 所以我

  1. 向資料添加空行並
  2. mesh/rows=3, mesh/cols=3到繪圖命令

並得到了

\documentclass[11pt]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{pgfplotstable}

\pgfplotstableread{
 x y z
    -1    -1     2
    -1     0     1
    -1     1     2

     0    -1     1
     0     0     0
     0     1     1

     1    -1     2
     1     0     1
     1     1     2
}{\data}

\begin{document}
%Now working
\begin{tikzpicture}
    \begin{axis}[view={0}{90}]
        \addplot3 [contour gnuplot={levels={1},labels=false,draw color=black},
        mesh/rows=3, mesh/cols=3] table[x={x}, y={y}, z={z}]{\data};
    \end{axis}
\end{tikzpicture}
\end{document}

在此輸入影像描述

相關內容