3D Scatter Plots in F#
How to make 3D scatter plots in F# with Plotly.
Plotly is known for its graphing libraries, but it's also a broader ecosystem for building interactive data apps, AI data analysis tools, and deploying and hosting Dash apps. Explore the full set of tools and platforms designed to help turn data into action. Discover Plotly.
Note: We are retiring documentation for R, MATLAB, Julia, and F#. Learn more about this change here.
In [1]:
// #r "nuget: Plotly.NET, 2.0.0-preview.6"
// #r "nuget: Plotly.NET.Interactive, 2.0.0-preview.6"
#r "nuget: Plotly.NET, 2.0.0-preview.8"
#r "nuget: Plotly.NET.Interactive, 2.0.0-preview.8"
open Plotly.NET
Basic 3D Scatter Plot¶
Basic 3D Scatter Plot¶
If Plotly Express does not provide a good starting point, it is also possible to use the more generic go.Scatter3D class from plotly.graph_objects. Like the 2D scatter plot go.Scatter, go.Scatter3d plots individual data in three-dimensional space.
In [2]:
open System
let t = [0. .. 0.5 .. 10.]
let x,y,z =
t
|> List.map (fun i ->
let i' = float i
let r = 10. * Math.Cos (i' / 10.)
(r*Math.Cos i',r*Math.Sin i',i')
)
|> List.unzip3
let scatter3dLine =
Chart.Scatter3d(x,y,z,mode = StyleParam.Mode.Markers)
In [3]:
scatter3dLine
Out[3]:
3D Scatter Plot with Colorscaling and Marker Styling¶
In [4]:
open Plotly.NET
open Plotly.NET.TraceObjects
open Plotly.NET.LayoutObjects
open System
let c = [0. .. 0.5 .. 10.]
let x,y,z =
c
|> List.map (fun i ->
let i' = float i
let r = 10. * Math.Cos (i' / 10.)
(r*Math.Cos i',r*Math.Sin i',i')
)
|> List.unzip3
let marker = Marker.init(Size =12,Opacity=0.8, Colorscale = StyleParam.Colorscale.Viridis)
marker?color <- x
let margin =Margin.init(Left =0., Bottom=0.,Top =0., Right = 0. )
let layout = Layout.init( Margin=margin)
let scatter3dLine =
Chart.Scatter3d(x,y,z,mode = StyleParam.Mode.Markers)
|> Chart.withMarker marker
|> Chart.withLayout layout
In [5]:
scatter3dLine
Out[5]: