Pgfplots - "reverse legend" by Lua
Hello, one more question about pgfplots & Lua: how to specify "reverse legend" by Lua? Here are some examples: - Plot 1 contains no Lua code and gives the desired result (OK); - Plot 2 uses Lua to specify "legend entries" successfully (OK); - Plot 3 tries to use Lua to specify "reverese legend", but doesn't work; ---- \usemodule[pgfplots] \starttext Plot 1 -- OK \starttikzpicture \startaxis[legend entries={Cos,Sin2,Sin},reverse legend] \addplot+[mark=none,fill,green]{cos(deg(x))}\closedcycle; \addplot+[mark=none,fill,yellow]{0.5*sin(deg(0.5*x))}\closedcycle; \addplot+[mark=none,]{sin(deg(x))}\closedcycle; \stopaxis \stoptikzpicture Plot 2 -- Legend by Lua -- OK \starttikzpicture %\startaxis[legend entries={Cos,Sin2,Sin}] \cldcommand{startaxis{["legend entries"] = "{Cos,Sin2,Sin}"}} \addplot+[mark=none,fill,green]{cos(deg(x))}\closedcycle; \addplot+[mark=none,fill,yellow]{0.5*sin(deg(0.5*x))}\closedcycle; \addplot+[mark=none,]{sin(deg(x))}\closedcycle; \stopaxis \stoptikzpicture Plot 3 -- Reverse legend by Lua -- not working \starttikzpicture %\startaxis[legend entries={Cos,Sin2,Sin},reverse legend] \cldcommand{startaxis{["legend entries"] = "{Cos,Sin2,Sin}", "reverse legend"}} \addplot+[mark=none,fill,green]{cos(deg(x))}\closedcycle; \addplot+[mark=none,fill,yellow]{0.5*sin(deg(0.5*x))}\closedcycle; \addplot+[mark=none,]{sin(deg(x))}\closedcycle; \stopaxis \stoptikzpicture \stoptext ---- So how to make Plot 3 work? Best regards, Lukas -- Ing. Lukáš Procházka | mailto:LPr@pontex.cz Pontex s. r. o. | mailto:pontex@pontex.cz | http://www.pontex.cz Bezová 1658 147 14 Praha 4 Tel: +420 241 096 751 Fax: +420 244 461 038
On Tue, 22 Dec 2015, Procházka Lukáš Ing. - Pontex s. r. o. wrote:
\starttikzpicture %\startaxis[legend entries={Cos,Sin2,Sin},reverse legend] \cldcommand{startaxis{["legend entries"] = "{Cos,Sin2,Sin}", "reverse legend"}}
This is not valid lua. On a lua prompt, try t = {["legend entries"]="{Cos,Sin2,Sin}", "reverse legend"} you get stdin:1: table index is nil stack traceback: stdin:1: in main chunk [C]: in ? One can define a lua table using {[key]=value, [key]=value, ... } etc or {value1, value2, ...} etc. Mixing the two is not allowed. In ConTeXt, the two are not mixed. But tikz (and pgfplot) freely mix the two syntax. So, one way to get the result using lua is (untested) \ctxlua{"\\startaxis[legend entries={Cos,Sin2,Sin}, reverse legend]"} where, if needed, you can build the string using string.format. Aditya
On 12/22/2015 5:36 PM, Aditya Mahajan wrote:
On Tue, 22 Dec 2015, Procházka Lukáš Ing. - Pontex s. r. o. wrote:
\starttikzpicture %\startaxis[legend entries={Cos,Sin2,Sin},reverse legend] \cldcommand{startaxis{["legend entries"] = "{Cos,Sin2,Sin}", "reverse legend"}}
This is not valid lua. On a lua prompt, try
t = {["legend entries"]="{Cos,Sin2,Sin}", "reverse legend"}
such a table is valid lua (mixture of indexed and hashed) but of course the application using it has to know how to use it Hans ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------
On Tue, 22 Dec 2015, Hans Hagen wrote:
On 12/22/2015 5:36 PM, Aditya Mahajan wrote:
On Tue, 22 Dec 2015, Procházka Lukáš Ing. - Pontex s. r. o. wrote:
\starttikzpicture %\startaxis[legend entries={Cos,Sin2,Sin},reverse legend] \cldcommand{startaxis{["legend entries"] = "{Cos,Sin2,Sin}", "reverse legend"}}
This is not valid lua. On a lua prompt, try
t = {["legend entries"]="{Cos,Sin2,Sin}", "reverse legend"}
You are right. Sorry for the noise. Aditya
Hello,
On Tue, 22 Dec 2015 18:21:01 +0100, Hans Hagen
t = {["legend entries"]="{Cos,Sin2,Sin}", "reverse legend"}
such a table is valid lua (mixture of indexed and hashed) but of course the application using it has to know how to use it
OK, so when '{["legend entries"]="{Cos,Sin2,Sin}", "reverse legend"}' is a valid Lua call and, what I guess, a valid Lua-to-context call - - why the code doesn't work? I also tried Aditya's way II - to build the "command-string" and to pass it to context: " context(string.format("\\startaxis[legend entries={%s},reverse legend]", "Sin,Cos")) " It works, although I'd rather use "context.startaxis{...options...}" style as it looks "nicer". Next question - why " context[[\startaxis]] " doesn't work, whilst context"\\startaxis" does? (See attached files.) Best regards, Lukas
Hans
-- Ing. Lukáš Procházka | mailto:LPr@pontex.cz Pontex s. r. o. | mailto:pontex@pontex.cz | http://www.pontex.cz Bezová 1658 147 14 Praha 4 Tel: +420 241 096 751 Fax: +420 244 461 038
participants (4)
-
Aditya Mahajan
-
Hans Hagen
-
Lukáš Procházka
-
Procházka Lukáš Ing. - Pontex s. r. o.