В Scala можно ли использовать Scatter3d от Plotly?


Моя цель-отобразить точки в трехмерном пространстве / диаграмме / графике. В python, кажется, это возможно: https://plot.ly/python/3d-scatter-plots/

Но в Scala я не нашел этого объекта / класса / признака:

  1. Веб-сайт говорит только о поверхностях: https://plot.ly/scala/

  2. Документация Plotly не содержит Scatter3d, а только Scatter, который, похоже, не поддерживает 3D : https://asidatascience.github.io/scala-plotly-client/latest/api/#co.theasi.plotly.Scatter

  3. Класс ThreeDPlot кажется невозможным для отображения точек в 3D без рисования поверхностей : https://asidatascience.github.io/scala-plotly-client/latest/api/#co.theasi.plotly.ThreeDPlot, и набор Z-координат странен (например, Iterable[Iterable[Double]] вместо чего-то более простого, например Iterable[Double])

  4. В презентации страницы GitHub используются 3D точки, но отображаются только в 2D пространство, используя только координаты X и Y: https://github.com/ASIDataScience/scala-plotly-client

2 3

2 ответа:

К сожалению, последняя версия пока не поддерживает 3D-графики рассеяния.

Однако я разветвил проект и добавил базовую поддержку для 3D-точечных диаграмм. Вот пример, который можно запустить непосредственно из консоли sbt:

val (x,y,z) = (Vector(1.0, 3.0, 3.0),Vector(2.0, 5.0, 1.0),Vector(5.0, 7.0, -1.0))
val p = ThreeDPlot().withScatter3D(x,y,z,ScatterOptions().copy(mode = Seq(ScatterMode.Marker)));
draw(p, "hello-plotly");

Я также открыл запрос на вытягивание, так что фиксация будет рассмотрена и, возможно, также объединена.

Вы можете использовать matplotlib (особенно mplot3d) Принимая во внимание, что matplotlib не поддерживает изначально Scala, вам необходимо преобразовать данные scala в формат matplotlib перед отображением и / или использованием этого модуля, который является:

Недостающий MatPlotLib для Scala + Spark

С уважением