Scrolling Surface
Scrolling 3D Scrolling Surface
Series for visualizing a 3D scrolling surface Grid inside Chart3D, with API for pushing data in a scrolling manner (append new data on top of existing data).

Creating 3D Scrolling Surface
series = chart.add_surface_scrolling_grid_series(columns=3, rows=3)
Configuring Scrolling 3D Scrolling Surface Coordinates
These methods allow you to define the spatial positioning of 3D scrolling surface samples.
Set Start Coordinate
# Set the start coordinate to (0, 0)
series.set_start(x=0, z=0)
Set Step Between Samples
# Set the step between samples to 10 in X and 5 in Z
series.set_step(x=10, z=5)
Intensity Interpolation
Set surface intensity interpolation mode.
# Enable smooth intensity interpolation:
series.set_intensity_interpolation(True)
Appending Scrolling Data
Use add_values(...) to push new rows of heights (Y) and/or intensities into the scrolling surface:
# Prepare one “frame” worth of rows:
new_heights = [
[1.0, 1.5, 2.0],
[1.2, 1.7, 2.2],
[1.4, 1.9, 2.4],
]
new_intensities = [
[10, 20, 30],
[15, 25, 35],
[20, 30, 40],
]
# Append both Y (height) and intensity at once or it is possible to add one of them:
series.add_values(
y_values=new_heights,
intensity_values=new_intensities
)
Customizing Fill Coloring
Set Palette Coloring
import lightningchart as lc
# Create a palette that transitions from blue to red:
series.set_palette_coloring(
steps=[
{'value': 0, 'color': '#0000FF'},
{'value': 50, 'color': 'red'}
],
look_up_property='value',
interpolate=True
)
# With formatted legend display:
series.set_palette_coloring(
steps=[
{'value': 0, 'color': '#0000FF'},
{'value': 100, 'color': '#FF0000'},
],
look_up_property='value',
formatter_precision=2, # Decimal places
formatter_unit='mag', # Unit suffix
formatter_scale=1.5, # Scale values
formatter_type='scientific', # 'standard', 'compact', 'engineering', 'scientific'
formatter_operation='floor', # 'none', 'round', 'ceil', 'floor'
)
Solid Fill Color
import lightningchart as lc
# Set the fill color to a light gray:
series.set_color((200, 200, 200))
Removing Color
# Remove the fill color:
series.set_empty_color_fill()
Culling, Depth Test & Shading
Control back-face/front-face culling, depth buffering, and shading style on the 3D scrolling surface:
# Disable culling to render both sides of surface polygons
series.set_cull_mode('disabled') # options: 'disabled', 'cull-back', 'cull-front'
# Turn off depth testing so overlapping parts draw in append order
series.set_depth_test_enabled(False)
# Choose between Phong (smooth) or simple flat shading
series.set_color_shading_style(
phong_shading=True, # True = Phong, False = flat
specular_reflection=0.5, # specular strength [0–1]
specular_color='#FFFFFF' # highlight color
)
-
set_cull_mode(mode)Controls which polygon faces to discard:"cull-back"(default) discards faces pointing away from camera"cull-front"discards faces pointing toward camera"disabled"renders both sides
-
set_depth_test_enabled(enabled)Enables/disables GPU depth buffering (occlusion) for this mesh. -
set_color_shading_style(phong_shading, specular_reflection, specular_color)Switches between realistic Phong shading and a simple lighting model, with tunable specular highlight.
Wireframe Configuration
Set Wireframe Stroke
import lightningchart as lc
# Set a wireframe with 2px thickness in black:
series.set_wireframe_stroke(thickness=2, color='black')
Hide Wireframe
# Hide the 3D scrolling surface wireframe:
series.hide_wireframe()
Series Utility Methods
This section works the same as for Line, to avoid duplication of guides, please refer to the section under Line
Legend
Please see common legend section.