0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

F# on WSL2 でグラフ描画

Last updated at Posted at 2021-08-03

通常F#はWindows上で使っているが、諸事情によりWSL上で使っていた際にグラフ描画でつまづいたので、方法を記録しておく。

環境

  • WSL2
  • Ubuntu 20.04.2 LTS
  • .NET 5.0.8
  • F# 5.0
  • F# Interactive version 11.4.2.0

方法

F#(や.NET)でのグラフ関係のライブラリはいろいろあるが、WindowsのAPIに依存していたり不足するファイルをインストールしなければならなかったりして、なかなかうまくいかなかった。そんな中で、グラフを画像ファイルとして保存できた方法を2通り紹介する。グラフをウィンドウとして表示させるのはまた面倒そうなので今回は避けた。
なお、いずれの方法も、Xサーバー(私はVcXsrvを使用)を起動しないと途中で停止してしまう(グラフィック系だから?)。Xサーバー等の導入はこちらなどを参照。

ScottPlot

Linux and MacOS users may need to install libgdiplus to use ScottPlot

とあるのでlibgdiplusをインストールする。

sudo apt install libgdiplus

簡単な例

#r "nuget: ScottPlot"
open ScottPlot
let x = [| 1. .. 10. |]
let y = x |> Array.map (fun n -> n * n)
let plt = Plot()
plt.AddScatter(x, y)
plt.SaveFig("hoge.png")

hoge.png

Plotly.NET

こちらも単体では動かず、以下のようなエラーが出た。

error while loading shared libraries: libxkbcommon.so.0: cannot open shared object file: No such file or directory
error while loading shared libraries: libgtk-3.so.0: cannot open shared object file: No such file or directory

そのため追加でインストールをする。

sudo apt install libxkbcommon0 libgtk-3-0
パッケージ名の検索について

今回は libxkbcommon.so.0libgtk-3.so.0 というファイルが不足しているためこれをインストールする必要があるが、 apt install では欲しいファイルが含まれている パッケージ名 を指定する必要がある。このようなときに apt-file コマンドが使える。こちらこちらを参考にした。インストールや使い方の簡単な説明は以下の通り。

sudo apt install apt-file
sudo apt-file update # パッケージリストを取得・更新
apt-file -l search <ファイル名> # -lオプション:パッケージ名のみ表示

簡単な例

#r "nuget: Plotly.NET, 2.0.0-preview.6"
#r "nuget: Plotly.NET.ImageExport, 2.0.0-preview.6"
open Plotly.NET
open Plotly.NET.ImageExport
let x = [ 0. .. 10. ]
let y = x |> List.map (fun n -> n * n)
Chart.Point(x, y)
|> Chart.savePNG("hoge")

hoge.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?