extends DV_BarChart
func _ready() -> void:
set_categories(["Desktop", "Tablet", "Mobile"])
add_series("Active Users", PackedFloat32Array([5204.0, 1510.0, 2490.0]))
add_series("Subscriptions", PackedFloat32Array([1400.0, 600.0, 950.0]))
set_gaps(16.0, 6.0)
set_stacked(false)
bar_clicked.connect(_on_bar_clicked)
bar_hovered.connect(_on_bar_hovered)
func _on_bar_clicked(series_idx: int, category_idx: int, value: float) -> void:
var label := get_categories()[category_idx]
print("Clicked", label, "series", series_idx, "=", value)
func _on_bar_hovered(series_idx: int, category_idx: int, value: float) -> void:
var label := get_categories()[category_idx]
print("Hover", label, "series", series_idx, "=", value)
extends DV_BoxPlot
func _ready() -> void:
set_title("Quarterly Returns")
set_y_axis_label("% Delta")
set_categories(["Tech", "Health", "Energy"])
add_series("Tech", PackedFloat32Array([2, 5, 7, 1, 9, 4, 6, 8, 3, 10]))
add_series("Health", PackedFloat32Array([1, 2, 2, 3, 4, 4, 5, 6, 7, 9]))
add_series("Energy", PackedFloat32Array([-2, 0, 1, 3, 3, 4, 8]))
set_show_outliers(true)
set_gap_group(12.0)
set_box_width_frac(0.55)
box_clicked.connect(_on_box_clicked)
func _on_box_clicked(group_idx: int, median: float) -> void:
print("Median for", get_categories()[group_idx], "=", median)
extends DV_LineChart
func _ready() -> void:
set_value_format(DVComponent.DECIMAL)
set_show_points(false)
var P := PackedFloat32Array([30,35,40,50,80,115,90,85,60,65])
set_categories(PackedStringArray(["11","12","13","14","15","16","17","18","19","20"]))
set_index_range(3, 10)
set_title("Sanity dataset (10 bars)")
set_y_axis_label("Price")
set_x_axis_label("Index")
# Use short windows so overlays are visible on 10 bars
var mask :int = DVChart.OVL_SMA | DVChart.OVL_EMA | DVChart.OVL_BBANDS
var s_price := add_series_with_overlays("Price", P, mask, 3, 5, 3, 2.0)
set_series_filled(s_price,true)
# Give each overlay its own style (don’t re-override with set_series_overlay_style)
set_series_sma_style(s_price, Color8(200,200,200), 2.0)
set_series_ema_style(s_price, Color8( 46,204,113), 2.0)
set_series_bbands_style(s_price, Color8(41,128,185), Color(0.16,0.5,0.83,0.12), 2.0)
extends DV_Timeline
func _ready() -> void:
set_show_grid(true)
set_grid_step(60.0)
var main_track := add_track("Main Story")
var side_track := add_track("Contracts")
add_event(main_track, 0.0, 240.0, "Prologue", Color(0.24, 0.56, 0.85), {})
add_event(main_track, 240.0, 540.0, "Siege", Color(0.78, 0.32, 0.28), {})
add_event(main_track, 540.0, 720.0, "Council", Color(0.32, 0.75, 0.45), {})
add_event(side_track, 120.0, 300.0, "Gather Intel", Color(0.58, 0.5, 0.82), {})
add_event(side_track, 360.0, 480.0, "Escort Caravan", Color(0.4, 0.65, 0.92), {})
set_time_range(0.0, 720.0)
set_now_enabled(true)
set_now_time(360.0)
event_clicked.connect(_on_event_clicked)
func _on_event_clicked(track: int, index: int, start: float, end: float, label: String, meta: Dictionary) -> void:
print("Clicked", label, "from", start, "to", end)
extends DV_Waterfall
func _ready() -> void:
set_title("Monthly Cash Flow")
set_bar_gap_px(8.0)
set_value_format(DVComponent.COMPACT)
var labels := PackedStringArray([
"Starting Balance",
"Sales",
"Refunds",
"Logistics",
"Marketing",
"Subscriptions",
"Taxes"
])
var deltas := PackedFloat32Array([120000.0, 45000.0, -12000.0, -8000.0, -5000.0, 22000.0, -18000.0])
set_categories(labels)
add_series("Δ Cash", deltas)
set_show_value_labels(true)
Our best-selling indie Bundle: Godot shaders + Blender tools ✨ https://t.co/zSlHDCuGVC#b3d #GodotEngine #3DCG pic.twitter.com/sjdYxXjKUB
— The Unity Shaders Bible (@ushadersbible) November 16, 2025