Skip to content

Commit 46b256a

Browse files
author
Max Streese
committed
Add surface trace for enabling 3d surface charts
1 parent 566abbb commit 46b256a

File tree

4 files changed

+25
-2
lines changed

4 files changed

+25
-2
lines changed

core/shared/src/main/scala/plotly/Sequence.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ sealed abstract class Sequence extends Product with Serializable
66

77
object Sequence {
88
final case class Doubles(seq: Seq[Double]) extends Sequence
9+
final case class NestedDoubles(seq: Seq[Doubles]) extends Sequence
910
final case class Strings(seq: Seq[String]) extends Sequence
1011
final case class DateTimes(seq: Seq[LocalDateTime]) extends Sequence
1112

@@ -17,6 +18,8 @@ object Sequence {
1718
Doubles(s.map(_.toDouble))
1819
implicit def fromLongSeq(s: Seq[Long]): Sequence =
1920
Doubles(s.map(_.toDouble))
21+
implicit def fromNestedDoubleSeq(s: Seq[Seq[Double]]): Sequence =
22+
NestedDoubles(s.map(v => Doubles(v)))
2023
implicit def fromStringSeq(s: Seq[String]): Sequence =
2124
Strings(s)
2225
implicit def fromDateTimes(seq: Seq[LocalDateTime]): Sequence =

core/shared/src/main/scala/plotly/Trace.scala

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,3 +235,22 @@ object Histogram {
235235
Option(histfunc)
236236
)
237237
}
238+
239+
@data class Surface(
240+
z: Option[Sequence],
241+
showscale: Option[Boolean],
242+
opacity: Option[Double]
243+
) extends Trace
244+
245+
object Surface {
246+
def apply(
247+
z: Sequence = null,
248+
showscale: JBoolean = null,
249+
opacity: JDouble = null
250+
): Surface =
251+
Surface(
252+
Option(z),
253+
Option(showscale) .map(b => b: Boolean),
254+
Option(opacity) .map(d => d: Double)
255+
)
256+
}

render/shared/src/main/scala/plotly/internals/ArgonautCodecsInternals.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ object ArgonautCodecsInternals extends ArgonautCodecsExtra {
4545
implicit val boxMeanBoolIsWrapper: IsWrapper[BoxMean.Bool] = null
4646
implicit val boxPointsBoolIsWrapper: IsWrapper[BoxPoints.Bool] = null
4747
implicit val sequenceDoublesIsWrapper: IsWrapper[Sequence.Doubles] = null
48+
implicit val sequenceNestedDoublesIsWrapper: IsWrapper[Sequence.NestedDoubles] = null
4849
implicit val sequenceStringsIsWrapper: IsWrapper[Sequence.Strings] = null
4950
implicit val sequenceDatetimesIsWrapper: IsWrapper[Sequence.DateTimes] = null
5051
implicit val doubleElementIsWrapper: IsWrapper[Element.DoubleElement] = null

tests/src/test/scala/plotly/doc/DocumentationTests.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,10 +249,10 @@ class DocumentationTests extends FlatSpec with Matchers {
249249
// TODO Heatmaps
250250
// TODO Heatmap and contour colorscales
251251
// TODO Polar charts
252-
"scientific/log"
252+
"scientific/log",
253253
// TODO Financial charts
254254
// TODO Maps
255-
// TODO 3D charts
255+
"3d/3d-surface"
256256
)
257257

258258
val subDirs = subDirNames.map(new File(dir, _))

0 commit comments

Comments
 (0)