Search code examples
f#fsi

Exception using XPlot from fsi


I'm trying to run a simple example of Xplot from FSI. I've installed all the nuget packages of XPLot and I copied the example in their hello world page.

#r "../packages/Google.DataTable.Net.Wrapper.1.0.0/lib/Google.DataTable.Net.Wrapper.dll"
#r "../packages/Newtonsoft.Json.3.5.8/lib/35/Newtonsoft.Json.dll"
#r "System.Core.dll"
#r "System.dll"
#r "System.Numerics.dll"
#r "../packages/XPlot.GoogleCharts.1.3.1/lib/net45/XPlot.GoogleCharts.dll"

open XPlot.GoogleCharts

let Bolivia = [("2004", 400.0); ("2005", 500.0); ("2006", 900.0); ("2007", 700.0) ]
let Ecuador = [("2004", 500.0); ("2005", 700.0); ("2006", 600.0); ("2007", 900.0) ]
let Madagascar = [("2004", 100.0); ("2005", 200.0); ("2006", 300.0); ("2007", 400.0) ]

let series = [ "bars"; "bars"; "bars"]
let inputs = [ Bolivia; Ecuador; Madagascar ]

let chart =
    inputs
    |> Chart.Combo
    |> Chart.WithOptions 
         (Options(title = "Coffee Production", series = 
            [| for typ in series -> Series(typ) |]))
    |> Chart.WithLabels 
         ["Bolivia"; "Ecuador"; "Madagascar"]
    |> Chart.WithLegend true
    |> Chart.WithSize (600, 250)

Now, when I try, for example, to get the HTML of the chart... chart.Html

...I'm getting the following error:

> System.TypeLoadException: Could not load type 'Google.DataTable.Net.Wrapper.Extension.SystemDataTableExtension' from assembly 'Google.DataTable.Net.Wrapper, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
   at XPlot.GoogleCharts.GoogleChart.get_Js()
   at XPlot.GoogleCharts.GoogleChart.get_Html() in C:\Users\AHMED\Documents\GitHub\XPlot\src\XPlot.GoogleCharts\Main.fs:line 282
   at <StartupCode$FSI_0006>.$FSI_0006.main@() in C:\Projects\XPlotTest\XPlotTest\Script.fsx:line 18

What I'm doing wrong here? How can I make it work?

Thank you very much,


Solution

  • Try updating Google.DataTable.Net.Wrapper to latest version (3.1.2)

    #r "../packages/Google.DataTable.Net.Wrapper.3.1.2.0\lib\Google.DataTable.Net.Wrapper.dll"
    (...)
     let html = chart.Html
    

    :

    val html : string =
      "<!DOCTYPE html>
        <html>
            <head>
                <met"+[1535 chars]