mirror of
https://github.com/Relintai/pandemonium_engine_easy_charts.git
synced 2025-02-26 17:24:21 +01:00
+ x_labels and y_labels
This commit is contained in:
parent
274c32f15e
commit
221609ea95
@ -10,10 +10,8 @@ var y_min_max: Pair = Pair.new()
|
|||||||
var x_sampled: SampledAxis = SampledAxis.new()
|
var x_sampled: SampledAxis = SampledAxis.new()
|
||||||
var y_sampled: SampledAxis = SampledAxis.new()
|
var y_sampled: SampledAxis = SampledAxis.new()
|
||||||
|
|
||||||
#
|
var x_labels: Array = []
|
||||||
var x_scale: float = 5.0
|
var y_labels: Array = []
|
||||||
var y_scale: float = 2.0
|
|
||||||
|
|
||||||
|
|
||||||
###### STYLE
|
###### STYLE
|
||||||
var drawing_options: DrawingOptions = DrawingOptions.new()
|
var drawing_options: DrawingOptions = DrawingOptions.new()
|
||||||
@ -235,8 +233,8 @@ func _draw_grid() -> void:
|
|||||||
return
|
return
|
||||||
|
|
||||||
# draw vertical lines
|
# draw vertical lines
|
||||||
var v_lines: float = (x_sampled.min_max.right - x_sampled.min_max.left) / x_scale
|
var v_lines: float = (x_sampled.min_max.right - x_sampled.min_max.left) / chart_properties.x_scale
|
||||||
for _x in x_scale+1:
|
for _x in chart_properties.x_scale+1:
|
||||||
var x_val: float = _x * v_lines + x_sampled.min_max.left
|
var x_val: float = _x * v_lines + x_sampled.min_max.left
|
||||||
var p1: Vector2 = Vector2(
|
var p1: Vector2 = Vector2(
|
||||||
range_lerp(x_val, x_sampled.min_max.left, x_sampled.min_max.right, x_sampled_domain.left, x_sampled_domain.right),
|
range_lerp(x_val, x_sampled.min_max.left, x_sampled.min_max.right, x_sampled_domain.left, x_sampled_domain.right),
|
||||||
@ -249,7 +247,11 @@ func _draw_grid() -> void:
|
|||||||
|
|
||||||
# Draw V labels
|
# Draw V labels
|
||||||
if drawing_options.labels:
|
if drawing_options.labels:
|
||||||
var tick_lbl: String = ("%.2f" if x_has_decimals else "%s") % x_val
|
var tick_lbl: String = ""
|
||||||
|
if x_labels.empty():
|
||||||
|
tick_lbl = ("%.2f" if x_has_decimals else "%s") % x_val
|
||||||
|
else:
|
||||||
|
tick_lbl = x_labels[floor(v_lines) * _x]
|
||||||
|
|
||||||
draw_string(
|
draw_string(
|
||||||
drawing_options.font,
|
drawing_options.font,
|
||||||
@ -270,8 +272,8 @@ func _draw_grid() -> void:
|
|||||||
draw_line(p1, p2, drawing_options.colors.grid, 1, true)
|
draw_line(p1, p2, drawing_options.colors.grid, 1, true)
|
||||||
|
|
||||||
# draw horizontal lines
|
# draw horizontal lines
|
||||||
var h_lines: float = (y_sampled.min_max.right - y_sampled.min_max.left) / y_scale
|
var h_lines: float = (y_sampled.min_max.right - y_sampled.min_max.left) / chart_properties.y_scale
|
||||||
for _y in y_scale+1:
|
for _y in chart_properties.y_scale+1:
|
||||||
var y_val: float = _y * h_lines + y_sampled.min_max.left
|
var y_val: float = _y * h_lines + y_sampled.min_max.left
|
||||||
var p1: Vector2 = Vector2(
|
var p1: Vector2 = Vector2(
|
||||||
bounding_box.position.x,
|
bounding_box.position.x,
|
||||||
@ -284,12 +286,15 @@ func _draw_grid() -> void:
|
|||||||
|
|
||||||
# Draw H labels
|
# Draw H labels
|
||||||
if drawing_options.labels:
|
if drawing_options.labels:
|
||||||
var tick_lbl: String = ("%.2f" if y_has_decimals else "%s") % y_val
|
var tick_lbl: String = ""
|
||||||
var tick_lbl_size: Vector2 = drawing_options.font.get_string_size(tick_lbl)
|
if y_labels.empty():
|
||||||
|
tick_lbl = ("%.2f" if y_has_decimals else "%s") % y_val
|
||||||
|
else:
|
||||||
|
tick_lbl = y_labels[floor(h_lines) * _y]
|
||||||
|
|
||||||
draw_string(
|
draw_string(
|
||||||
drawing_options.font,
|
drawing_options.font,
|
||||||
p1 - Vector2(tick_lbl_size.x + _y_ticklabel_offset + _y_tick_size, - _y_ticklabel_size.y * 0.35),
|
p1 - Vector2(drawing_options.font.get_string_size(tick_lbl).x + _y_ticklabel_offset + _y_tick_size, - _y_ticklabel_size.y * 0.35),
|
||||||
tick_lbl,
|
tick_lbl,
|
||||||
drawing_options.colors.bounding_box
|
drawing_options.colors.bounding_box
|
||||||
)
|
)
|
||||||
@ -382,7 +387,7 @@ func _validate_sampled_axis(x_data: SampledAxis, y_data: SampledAxis) -> int:
|
|||||||
if x_data.values.empty() or y_data.values.empty():
|
if x_data.values.empty() or y_data.values.empty():
|
||||||
# Either there are no X or Y
|
# Either there are no X or Y
|
||||||
error = 1
|
error = 1
|
||||||
if y_data.values[0] is Array:
|
elif y_data.values[0] is Array:
|
||||||
for dim in y_data.values:
|
for dim in y_data.values:
|
||||||
if dim.size() != x_data.values.size():
|
if dim.size() != x_data.values.size():
|
||||||
error = 3 # one of Y dim has not X length
|
error = 3 # one of Y dim has not X length
|
||||||
|
@ -4,3 +4,6 @@ class_name ChartProperties
|
|||||||
var title: String
|
var title: String
|
||||||
var x_label: String
|
var x_label: String
|
||||||
var y_label: String
|
var y_label: String
|
||||||
|
|
||||||
|
var x_scale: float = 5.0
|
||||||
|
var y_scale: float = 2.0
|
||||||
|
Loading…
Reference in New Issue
Block a user