0

Im trying to run the following code

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{width = 7cm, compat = 1.8}
\begin{document}
\begin{tikzpicture}
\begin{axis}[domain = -2:2, domain y = 0:2*pi]
\addplot3[contour gnuplot = {output point meta = rawz, number=10, labels=false}, samples = 41, z filter/.code=\def\pgfmathresult{-1.6}] {exp(-x^2) * sin(deg(y))};
\addplot3[surf, samples = 25] {exp(-x^2) * sin(deg(y))};
\end{axis}
\end{tikzpicture}
\end{document}

and I'm getting the error

Package pgfplots Error: sorry, plot file{Utitlled_contourmp0.table} could not be opened

through a quick search I found out that contour maps require pgfplots and gnuplot to talk to each other. In theory the way to make them interact is adding

!TEX option = --enable-write18

or

%!TEX option = --enable-escape

at the top of the file. Unfortunately this has not worked for me. Any suggestions?

5
  • When I run your code with pdflatex -shell-escape, it works beautifully. Perhaps this means you need to say !TEX option = -shell-escape.
    – user121799
    Oct 22 '18 at 21:23
  • Just tried adding % !TEX option = -shell-escape before/after \begin{document}, still no luck
    – noibe
    Oct 22 '18 at 22:28
  • OK, then could you please tell us how you compile it? (And what happens if you add a -, i.e. use % !TEX option = --shell-escape?)
    – user121799
    Oct 22 '18 at 22:44
  • If you hit enter does it continue to compile with the following warnings Package pgfplots Error: sorry, plot file{untitled-2_contourtmp0.table} could not be opened. See the pgfplots package documentation for explanation. Type H <return> for immediate help. ... l.7 ...athresult{-1.6}] {exp(-x^2) * sin(deg(y))}; Package pgfplots Warning: the current plot has no coordinates (or all have been filtered away) on input line 7.
    – user170109
    Oct 23 '18 at 0:41
  • Ok have now added a diagnostic MWE to my answer.
    – user170109
    Oct 24 '18 at 17:07
1

After testing dozens of similar issues, and trying to develop a "simple" diagnostic MWE.

The message is very clear [sic] Utitlled_contourtmp0.table is not generated thus is not available, this seems to be an all too common problem with contour gnuplot and the two solutions are relatively simple.

1) -shell-execute needs to be active

2) \yourpathto\gnuplot\bin needs to be on your editors path

The following test script should help Windows users feel free to duplicate for mac/nix

\documentclass[border=10pt]{standalone}
\RequirePackage{ifplatform}
\usepackage{ifpdf}
%% First sanity test if pdfLaTeX is active
\ifpdf
  \errmessage{OK ! pdfLaTeX IS active PRESS ENTER TO CONTINUE}
\else
  \errmessage{plain latex and dvipdf ? PLEASE SWITCH to pdfLaTeX}
\fi
%% Second sanity test if shell escape is available
\ifshellescape
    \errmessage{OK   Shell-Escape IS active  PRESS ENTER TO CONTINUE}
\else
    \errmessage{Shell-Escape is NOT working. PLEASE ADD --shell-escape to pdfLaTeX arguments}
\fi
\begin{document}
%% if shell escape is working we can get console feedback
\def\tmpfile{w18-active-\the\year\the\month\the\day\the\time.cmd}
\immediate\write18{echo echo Shell-Escape is active > "\tmpfile"}
\ifpdf
  \immediate\write18{echo echo You are using pdflatex >> "\tmpfile"}
\else
  \immediate\write18{echo echo plain latex and dvipdf ? switch to pdflatex >> "\tmpfile"}
\fi
% Check where gnuplot is Fist check if we can get version info
\immediate\write18{echo gnuplot -e  "show version long" >> "\tmpfile"}
% these lines are under review as it should traverse editor roots, but for present we check relative and system path
\immediate\write18{echo where /r . gnuplot.exe >> "\tmpfile"}
\immediate\write18{echo where gnuplot.exe >> "\tmpfile"}

\immediate\write18{echo set path >> "\tmpfile"}
% Store latest results WILL be overwritten on each run
\immediate\write18{"\tmpfile" >results.txt}
% Add a pause in case user wants to manually edit / run cmd file
\immediate\write18{echo pause>> "\tmpfile"}
\immediate\write18{"\tmpfile"}
\immediate\write18{del "\tmpfile"}
ALL DONE SEE CONSOLE OUTPUT OR Results.txt
\end{document}
0

The same problem happened for me when I've set -output-dir parameter compiling with pdflatex.

So, I have the following structure:

.
    builds/
    texs/
        file_to_compile.tex

I wanted to compile my .tex and put it to builds. Being in root I tried to execute this:
pdflatex -shell-escape -output-dir=builds texs/file_to_compile.tex
and got this weird plot file could not be opened error. With no -output-dir parameter it compiles just fine straight into the root, which is unwanted behaviour for me.

So my solution was:

  1. Go into texs/
  2. Execute pdflatex -shell-escape -output-dir="../builds" file_to_compile.tex

(I've got new problem, because that's what I try to do automatically with Python, and I don't want to change current dir every compilation, but that's another story.)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.