login  home  contents  what's new  discussion  bug reports     help  links  subscribe  changes  refresh  edit

Edit detail for SandBoxPlotly revision 1 of 1

1
Editor: Kurt Pagani
Time: 2018/07/28 22:50:37 GMT+0
Note:

changed:
-
\begin{spad}
)abbrev package PLOTLY Plotly
++ Author: Kurt Pagani
++ Date Created: Sat Jul 14 01:52:32 CEST 2018
++ License: BSD
++ References:
++ Description:
++
Plotly(R) : Exports == Implementation where
  
  R:Join(Ring,ConvertibleTo Float,ConvertibleTo String)
  
  LR  ==> List R
  STR ==> String
  MSC ==> MoreSystemCommands
  
  Exports ==  with
    
    format : (STR,STR) -> STR
    format : (STR,List STR) -> STR
    convert : LR -> STR
    plotly : (LR,LR) -> Void
    plotly2html : (LR,LR) -> Void
    
    
	
  Implementation ==  add 

    plotly_js:String:="https://cdn.plot.ly/plotly-latest.min.js"
    --plotly_js:String:="'file:///...plotly-latest.min.js'"

    loc:String:="C:/Users/kfp"  -- where to place the html file
    
    title:="titleXY"
    fname:="plot"


    tmpl:="~{<!DOCTYPE html>~%_
<head>~%_
<title>~a</title>~%_
&lt;disabled script src=~a&gt;&lt;disabled /script&gt;~%_
</head>~%_
<body>~%_
<div id=~a style=width:600px;height:250px;></div>~%_
&lt;disabled script&gt;~%_
  DIVDOM=document.getElementById('~a');~%_
  Plotly.plot( DIVDOM, [{~%_
    x: ~a,~%_
    y: ~a }], {~%_
  margin: { t: 0 } } );~%_
&lt;disabled /script&gt;~%_
</body>~%_
</html>~}"

           
    
    format(s:STR,t:STR):STR == string FORMAT('NIL,s,t)$Lisp
      -- format("<title>~a</title>","'Hello'")
      
    format(s:STR,l:List STR) == string FORMAT('NIL,s,l)$Lisp
      -- FORMAT('NIL,"~{~a ~a ~a ~}",["x","y","z"])$Lisp
      -- format("~{~a ~a ~a ~}",["One", "two", "three"])
      

    convert(X:LR):String ==
      if R has FloatingPointSystem then
        ls:List String:=[toString(x,8) for x in X]
      else
        ls:List String:=[convert(x)@String for x in X]
      format("[~{~a~^, ~}]" ,ls)
      -- convert([1.222,3.444])$Plotly(Float)
      -- convert([1,3])$Plotly(INT)

    plotly(X:LR,Y:LR):Void ==
      not #X=#Y => error "#X ~= #Y !" 
      x:STR:=convert(X)
      y:STR:=convert(Y)
      f:FileName:=new(loc,fname,"html")$FileName
      tf:TextFile:=open(f,"output")
      put(s) ==> writeLine!(tf,s)
      ls:List STR:=[title,plotly_js,title,title,x,y]
      put format(tmpl,ls)
      close!(tf)
      Void()
      
    plotly2html(X:LR,Y:LR):Void ==
      not #X=#Y => error "#X ~= #Y !" 
      x:STR:=convert(X)
      y:STR:=convert(Y)
      put(s) ==> output(s)$OutputPackage
      ls:List STR:=[title,plotly_js,title,title,x,y]
      put format(tmpl,ls)
      Void()    
    

\end{spad}

\begin{axiom}
)set output tex off
)set output algebra on
plotly2html([i for i in 1..12],[i^2 for i in 1..12])
\end{axiom}


<img src="newplot.png"/>

-- plotly([i for i in 1..12],[i^2 for i in 1..12])
-- plotly([i::Float for i in 1..12],[sin(i::Float) for i in 1..12])
-- TODO: send to browser ...

spad
)abbrev package PLOTLY Plotly
++ Author: Kurt Pagani
++ Date Created: Sat Jul 14 01:52:32 CEST 2018
++ License: BSD
++ References:
++ Description:
++
Plotly(R) : Exports == Implementation where
R:Join(Ring,ConvertibleTo Float,ConvertibleTo String)
LR ==> List R STR ==> String MSC ==> MoreSystemCommands
Exports == with
format : (STR,STR) -> STR format : (STR,List STR) -> STR convert : LR -> STR plotly : (LR,LR) -> Void plotly2html : (LR,LR) -> Void
Implementation == add
plotly_js:String:="https://cdn.plot.ly/plotly-latest.min.js" --plotly_js:String:="'file:///...plotly-latest.min.js'"
loc:String:="C:/Users/kfp" -- where to place the html file
title:="titleXY" fname:="plot"
tmpl:="~{<!DOCTYPE html>~%_ <head>~%_ <title>~a</title>~%_ &lt;disabled script src=~a&gt;&lt;disabled /script&gt;~%_ </head>~%_ <body>~%_ <div id=~a style=width:600px;height:250px;></div>~%_ &lt;disabled script&gt;~%_ DIVDOM=document.getElementById('~a');~%_ Plotly.plot( DIVDOM, [{~%_ x: ~a,~%_ y: ~a }], {~%_ margin: { t: 0 } } );~%_ &lt;disabled /script&gt;~%_ </body>~%_ </html>~}"
format(s:STR,t:STR):STR == string FORMAT('NIL,s,t)$Lisp -- format("<title>~a</title>","'Hello'")
format(s:STR,l:List STR) == string FORMAT('NIL,s,l)$Lisp -- FORMAT('NIL,"~{~a ~a ~a ~}",["x","y","z"])$Lisp -- format("~{~a ~a ~a ~}",["One", "two", "three"])
convert(X:LR):String == if R has FloatingPointSystem then ls:List String:=[toString(x,8) for x in X] else ls:List String:=[convert(x)@String for x in X] format("[~{~a~^, ~}]" ,ls) -- convert([1.222,3.444])$Plotly(Float) -- convert([1,3])$Plotly(INT)
plotly(X:LR,Y:LR):Void == not #X=#Y => error "#X ~= #Y !" x:STR:=convert(X) y:STR:=convert(Y) f:FileName:=new(loc,fname,"html")$FileName tf:TextFile:=open(f,"output") put(s) ==> writeLine!(tf,s) ls:List STR:=[title,plotly_js,title,title,x,y] put format(tmpl,ls) close!(tf) Void()
plotly2html(X:LR,Y:LR):Void == not #X=#Y => error "#X ~= #Y !" x:STR:=convert(X) y:STR:=convert(Y) put(s) ==> output(s)$OutputPackage ls:List STR:=[title,plotly_js,title,title,x,y] put format(tmpl,ls) Void()
spad
   Compiling FriCAS source code from file 
      /var/lib/zope2.10/instance/axiom-wiki/var/LatexWiki/3265706449736266503-25px001.spad
      using old system compiler.
   PLOTLY abbreviates package Plotly 
------------------------------------------------------------------------
   initializing NRLIB PLOTLY for Plotly 
   compiling into NRLIB PLOTLY 
****** Domain: R already in scope
****** Domain: R already in scope
   compiling exported format : (String,String) -> String
Time: 0.02 SEC.
compiling exported format : (String,List String) -> String Time: 0 SEC.
compiling exported convert : List R -> String ****** Domain: R already in scope augmenting R: (FloatingPointSystem) Time: 0.02 SEC.
compiling exported plotly : (List R,List R) -> Void processing macro definition put s ==> writeLine!(tf,s) Time: 0.01 SEC.
compiling exported plotly2html : (List R,List R) -> Void processing macro definition put s ==> (Sel (OutputPackage) output) s Time: 0.01 SEC.
(time taken in buildFunctor: 0)
;;; *** |Plotly| REDEFINED
;;; *** |Plotly| REDEFINED Time: 0 SEC.
Cumulative Statistics for Constructor Plotly Time: 0.06 seconds
finalizing NRLIB PLOTLY Processing Plotly for Browser database: --------constructor--------- --->-->Plotly((format ((String) (String) (String)))): Not documented!!!! --->-->Plotly((format ((String) (String) (List (String))))): Not documented!!!! --->-->Plotly((convert ((String) (List R)))): Not documented!!!! --->-->Plotly((plotly ((Void) (List R) (List R)))): Not documented!!!! --->-->Plotly((plotly2html ((Void) (List R) (List R)))): Not documented!!!! ; compiling file "/var/aw/var/LatexWiki/PLOTLY.NRLIB/PLOTLY.lsp" (written 28 JUL 2018 10:50:38 PM):
; /var/aw/var/LatexWiki/PLOTLY.NRLIB/PLOTLY.fasl written ; compilation finished in 0:00:00.035 ------------------------------------------------------------------------ Plotly is now explicitly exposed in frame initial Plotly will be automatically loaded when needed from /var/aw/var/LatexWiki/PLOTLY.NRLIB/PLOTLY

fricas
)set output tex off
 
fricas
)set output algebra on
plotly2html([i for i in 1..12],[i^2 for i in 1..12])
<!DOCTYPE html> <head> <title>titleXY</title> &lt;disabled script src=https:/ /cdn.plot.ly/plotly-latest.min.js&gt;&lt;disabled /script&gt; </head> <body>
<div id=titleXY style=width:600px;height:250px;></div> &lt;disabled script&gt ; DIVDOM=document.getElementById('titleXY'); Plotly.plot( DIVDOM, [{
x: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], y: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144] }], { margin: { t: 0 } } ); &lt;disabled /script&gt;
</body> </html>
Type: Void

-- plotly([i for i in 1..12]?,[i^2 for i in 1..12]?)
plotly([i::Float for i in 1..12]?,[sin(i::Float) for i in 1..12]?) -- TODO: send to browser ...