# gnuplot calculated curve shifts to the left

The following code samples are borrowed from

My computer configuration is

• Windows XP SP.3 Japanese version,
• TeXmaker 3.5 or TexStudio 2.4 and
• gnuplot 4.6.

The code samples compile correct running an English version of Windows XP.

# Test 1

## Code

\documentclass[border=2pt]{standalone}
\usepackage{pgfplots}

\begin{filecontents}{test.dat}
2   12
5   55
10  96
20  135
50  144
100 147
200 147
500 146
\end{filecontents}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmode=log,
ymode=linear,
axis x line*=bottom,
axis y line*=left,
tick label style={font=\small},
grid=both,
tick align=outside,
tickpos=left,
xlabel= {[ACh]} (nM),
ylabel=Response (mm),
xmin=0.1, xmax=1000,
ymin=0, ymax=160,
width=0.8\textwidth,
height=0.6\textwidth,
]

\addplot+[raw gnuplot, draw=red, mark=none, smooth] gnuplot {
set log x;
f(x)=Ymax/(1+(EC50/x)^nH);
Ymax=150;
nH=2;
EC50=60;
fit f(x) 'test.dat' using 1:2 via Ymax,EC50,nH;
plot [x=0.1:1000] f(x);
};

% Below is the correct line using the equation: {Ymax/(1+(EC50/[A])^nH)}

\end{axis}
\end{tikzpicture}
\end{document}


## Output

The red plot (calculated by gnuplot) is shifted to the left.

# Test 2

## Code

\documentclass[border=2pt]{standalone}
\usepackage{pgfplots,pgfplotstable}

\begin{filecontents}{drc1.dat}
2   17
5   55
10  96
20  125
50  144
100 147
200 147
500 146
\end{filecontents}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
legend pos=north west,
xmode=log,
ymode=linear,
axis x line*=bottom,
axis y line*=left,
tick label style={font=\small},
grid=both,
tick align=outside,
tickpos=left,
xlabel= {[ACh]} (nM),
ylabel=Response (mm),
xmin=0.1, xmax=1000,
ymin=0, ymax=160,
width=0.7\textwidth,
height=0.4\textwidth,
]

\addplot[only marks, mark size=1.8, black] file {drc1.dat};
\addplot+[raw gnuplot, red, mark=none, smooth] gnuplot {
set log x;
f(x)=Ymax/(1+(EC50/x)^nH);
Ymax=150;
nH=1;
EC50=50;
set fit errorvariables;
fit f(x) 'drc1.dat' using 1:2 via Ymax,EC50,nH;
plot [x=0.1:1000] f(x);
set print "parameters.dat"; % Open a file to save the parameters into
print Ymax, Ymax_err;       % Write the parameters to file
print nH, nH_err;
print EC50, EC50_err;
};
\pgfplotstableread{parameters.dat}\parameters % Open the file Gnuplot wrote
\pgfplotstablegetelem{0}{0}\of\parameters \pgfmathsetmacro\paramA{\pgfplotsretval}        % Get first element, save into \paramA
\pgfplotstablegetelem{1}{0}\of\parameters \pgfmathsetmacro\paramB{\pgfplotsretval}
\pgfplotstablegetelem{2}{0}\of\parameters \pgfmathsetmacro\paramC{\pgfplotsretval}
$\frac{\pgfmathprintnumber{\paramA}}{\left(1+\frac{\pgfmathprintnumber{\paramB}}{[ACh]}\right)^{\pgfmathprintnumber{\paramC}}}$
}
\end{axis}
\end{tikzpicture}

\pgfplotstabletypeset[
dec sep align,
fixed,
columns/0/.style={column name=Parameter},
columns/1/.style={column name=Standard Error}
]{parameters.dat}
\end{document}


## Output

The result is the same: The gnuplot curve is getting shifted to the left.

Please tell me why it happens.

There are warnings in the log

 LaTeX Warning: Overwriting file ./drc1.dat'.
......
! Package pgfplots Warning: running in backwards compatibility mode (unsuitable tick labels; missing features). Consider writing \pgfplotsset{compat=1.6} into your preamble.

runsystem(gnuplot curveshitf.pgf-plot.gnuplot)...disabled (restricted).
......
NOTE: coordinate (-1.0000000e+000,1.3778365e-001) has been dropped because it is unbounded (in x).
NOTE: coordinate (-9.5959596e-001,1.6059627e-001) has been dropped because it is unbounded (in x).
NOTE: coordinate (-9.1919192e-001,1.8718116e-001) has been dropped because it is unbounded (in x).
NOTE: coordinate (-8.7878788e-001,2.1816037e-001) has been dropped because it is unbounded (in x).
NOTE: coordinate (-8.3838384e-001,2.5425793e-001) has been dropped because it is unbounded (in x).
NOTE: coordinate (-7.9797980e-001,2.9631632e-001) has been dropped because it is unbounded (in x).
NOTE: coordinate (-7.5757576e-001,3.4531556e-001) has been dropped because it is unbounded (in x).
NOTE: coordinate (-7.1717172e-001,4.0239527e-001) has been dropped because it is unbounded (in x).
NOTE: coordinate (-6.7676768e-001,4.6888008e-001) has been dropped because it is unbounded (in x).
NOTE: coordinate (-6.3636364e-001,5.4630898e-001) has been dropped because it is unbounded (in x).
NOTE: coordinate (-5.9595960e-001,6.3646891e-001) has been dropped because it is unbounded (in x).
NOTE: coordinate (-5.5555556e-001,7.4143341e-001) has been dropped because it is unbounded (in x).
NOTE: coordinate (-5.1515152e-001,8.6360674e-001) has been dropped because it is unbounded (in x).
NOTE: coordinate (-4.7474747e-001,1.0057741e+000) has been dropped because it is unbounded (in x).
NOTE: coordinate (-4.3434343e-001,1.1711584e+000) has been dropped because it is unbounded (in x).
NOTE: coordinate (-3.9393939e-001,1.3634852e+000) has been dropped because it is unbounded (in x).
NOTE: coordinate (-3.5353535e-001,1.5870537e+000) has been dropped because it is unbounded (in x).
NOTE: coordinate (-3.1313131e-001,1.8468179e+000) has been dropped because it is unbounded (in x).
NOTE: coordinate (-2.7272727e-001,2.1484748e+000) has been dropped because it is unbounded (in x).
NOTE: coordinate (-2.3232323e-001,2.4985601e+000) has been dropped because it is unbounded (in x).
NOTE: coordinate (-1.9191919e-001,2.9045527e+000) has been dropped because it is unbounded (in x).
NOTE: coordinate (-1.5151515e-001,3.3749826e+000) has been dropped because it is unbounded (in x).
NOTE: coordinate (-1.1111111e-001,3.9195432e+000) has been dropped because it is unbounded (in x).
NOTE: coordinate (-7.0707071e-002,4.5492015e+000) has been dropped because it is unbounded (in x).
NOTE: coordinate (-3.0303030e-002,5.2763015e+000) has been dropped because it is unbounded (in x).


in preambule, then I have added

\pgfplotsset{compat=1.6}
\listfiles


and for calling gnuplot, i have added -enable-write18 which can work to make plot like this http://www.texample.net/tikz/examples/gnuplot-basics/ . After doing all, it seems does not change.

the filelist is like this

   *File List*
article.cls    2007/10/19 v1.4h Standard LaTeX document class
size11.clo    2007/10/19 v1.4h Standard LaTeX file (size option)
pgfplots.sty    2012/08/23 v1.6.1 (git show 1.6.1 )
tikz.sty    2010/10/13 v2.10 (rcs-revision 1.76)
pgf.sty    2008/01/15 v2.10 (rcs-revision 1.12)
pgfrcs.sty    2010/10/25 v2.10 (rcs-revision 1.24)
everyshi.sty    2001/05/15 v3.00 EveryShipout Package (MS)
pgfrcs.code.tex
pgfcore.sty    2010/04/11 v2.10 (rcs-revision 1.7)
graphicx.sty    1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)
keyval.sty    1999/03/16 v1.13 key=value parser (DPC)
graphics.sty    2009/02/05 v1.0o Standard LaTeX Graphics (DPC,SPQR)
trig.sty    1999/03/16 v1.09 sin cos tan (DPC)
graphics.cfg    2007/01/18 v1.5 graphics configuration of teTeX/TeXLive
pdftex.def    2011/05/27 v0.06d Graphics/color for pdfTeX
infwarerr.sty    2010/04/08 v1.3 Providing info/warning/error messages (HO)
ltxcmds.sty    2011/11/09 v1.22 LaTeX kernel commands for general use (HO)
pgfsys.sty    2010/06/30 v2.10 (rcs-revision 1.37)
pgfsys.code.tex
pgfsyssoftpath.code.tex    2008/07/18  (rcs-revision 1.7)
pgfsysprotocol.code.tex    2006/10/16  (rcs-revision 1.4)
xcolor.sty    2007/01/21 v2.11 LaTeX color extensions (UK)
color.cfg    2007/01/18 v1.5 color configuration of teTeX/TeXLive
pgfcore.code.tex
pgfcomp-version-0-65.sty    2007/07/03 v2.10 (rcs-revision 1.7)
pgfcomp-version-1-18.sty    2007/07/23 v2.10 (rcs-revision 1.1)
pgffor.sty    2010/03/23 v2.10 (rcs-revision 1.18)
pgfkeys.sty
pgfkeys.code.tex
pgffor.code.tex
tikz.code.tex
pgfplotstable.sty    2012/08/23 Part of pgfplots
array.sty    2008/09/09 v2.4c Tabular extension package (FMi)
filecontents.sty    2011/10/08 v1.3 Create an external file from within a LaTeX
document
supp-pdf.mkii


After suggestion from Christian Feuersängern, I found this in the log

Package pgfplots: checking gnuplot -V : \par ' (if this fails, set /pgfplots/
gnuplot writes logscale=true|false')
! Package pgfplots Warning: Sorry, I can't reliably check which version of gnup
lot is available. I guess it is gnuplot < 4.4. Please set /pgfplots/gnuplot wr
ites logscale=true|false' manually if anything fails.
Package pgfplots: I found gnuplot version < 4.4. This one writes log() coordina
tes. I'll handle it accordingly.
runsystem(gnuplot curveshitf.pgf-plot.gnuplot)...disabled (restricted).


What should I do to solve it? I am using gnuplot 4.6, but why it is written 4.4?

-
What is your question? What do you want to achieve? How should the output look like? –  Qrrbrbirlbel Oct 20 '12 at 23:17
thank you for your comment, actually the graph should be like this tex.stackexchange.com/questions/29562/… and tex.stackexchange.com/questions/29633/… . why my computer change its shape from normal form? –  limpato Oct 20 '12 at 23:33
please look the line... why the sigmoid line shift to the left in my Japanese Windows XP computer? it should be attach to the point. In my english version computer, i can produce exactly same graph like the answer of each questions by Toby and Jake.sorry my bad explanation to make you confuse. –  limpato Oct 20 '12 at 23:59
Put \listfiles in your preamble and compile with both computers. Check the .log file and add the its content following the line *File List* to your question. Compare the result of both computers. I still suspect not properly updated package or even an old gnuplot that calculates wrongly. –  Qrrbrbirlbel Oct 22 '12 at 15:16
Could you edit your question to include the content of the file <basename>.pgf-plot.gnuplot? –  Jake Oct 22 '12 at 18:40

There was a gnuplot compatibility problem a long time ago: the upgrade of gnuplot <4.4 to gnuplot 4.4 caused all pgfplots log plots to fail. Gnuplot pre 4.4 wrote the log coordinates to the output file wheras gnuplot since 4.4 writes the coordinates without applying the log.

This has been fixed in pgfplots (it issues a version switch whenever a log axis tries to invoke gnuplot). Unfortunately, this fix works only if raw gnuplot is off.

You can write \csname pgfplots@identify@gnuplot@logbehavior@checkversion\endcsname into your document, rerun TeX, and search for "Package pgfplots: checking gnuplot -V " in the .log file. It will tell you what it found.

If you find "Package pgfplots: I found gnuplot version < 4.4. This one writes log() coordinates. I'll handle it accordingly." then this is the root cause.

Upgrading gnuplot will fix the problem.

-
thank you, i have updated gnuplot months ago to 4.6, but why it is written 4.4? –  limpato Oct 25 '12 at 12:45
According to your edit, it could not run gnuplot. Not even gnuplot -V (compare runsystem(gnuplot curveshitf.pgf-plot.gnuplot)...disabled (restricted)). Perhaps this is the solution. –  Christian Feuersänger Oct 25 '12 at 12:46
Thanks, I notice that I have two version of gnuplot in my computer, one is located in c:\program files\gnuplot (new version) and another one in c:\gnuplot (v.4.2 old version) and I have removed the old one, and now, it run well as expected. Thanks a lot for helping me in injury time to submit thesis. –  limpato Oct 25 '12 at 12:49