2

我在 FSLab 教程中尝试过Chart.WithSizedisplayZoomButtons = true但似乎没有任何改变输出。

在直接使用 XPlot.GoogleCharts 的其他项目中也是如此。

在此处输入图像描述

我错过了什么吗?

4

2 回答 2

1

从 nuget 下载 Plotly 1.4.2 并将 FSLab 包目录中的 dll 替换为 XPlotly(请参阅Plotting with Xplotly Q)。然后就可以使用 Xplotly 的控件进行放大缩小、保存图表等操作。例如:

#load @"..\..\FSLAB\packages\FsLab\FsLab.fsx"
open XPlot.Plotly
open XPlot.Plotly.Graph
open XPlot.Plotly.Html
//open XPlot.GoogleCharts

let layout = Layout(title = "Basic Bar Chart")
["giraffes", 20; "orangutans", 14; "monkeys", 23]
    |> Chart.Bar
    |> Chart.WithLayout layout
    |> Chart.WithHeight 400
    |> Chart.WithWidth 700
    |> Chart.Show

在此处输入图像描述

于 2016-10-12T06:02:32.493 回答
0

使用 Plotly 的非常简单的图表解决方案(并且有效):

open Newtonsoft.Json

let html = """<head>
  <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>
<body>
  <div id="myDiv" style="width: 100%; height: 100%;"></div>
  <script>
    var data = __DATA__;
    var layout = __LAYOUT__;
    Plotly.newPlot('myDiv', data, layout);
  </script>
</body>"""

let (=>) k v = k, (v:>obj)

let doPlot data layout =
    let data = JsonConvert.SerializeObject data
    let layout = JsonConvert.SerializeObject layout
    let path = Path.GetTempPath() + DateTime.Now.Ticks.ToString() + ".html"
    File.WriteAllText(path, html.Replace("__DATA__", data).Replace("__LAYOUT__", layout))
    System.Diagnostics.Process.Start(path)

let layout =
    [ "title" => "Plot"
      "xaxis" => dict [
        "title" => "Ticks"
        "showgrid" => false
        "zeroline" => false
      ]
      "yaxis" => dict [
        "title" => "Price"
        "showline" => false
      ]
    ] |> dict

let data = [
    dict [ "x" => [1999; 2000; 2001; 2002]
           "y" => [16; 5; 11; 9]
         ]
    ]

doPlot data layout
于 2016-11-14T06:53:32.290 回答