mirror of
https://github.com/Relintai/pandemonium_engine_easy_charts.git
synced 2025-02-26 17:24:21 +01:00
update dataframe and matrix
This commit is contained in:
parent
ef0c1dba93
commit
161757cca9
@ -10,7 +10,7 @@ var dataset : Array = []
|
|||||||
|
|
||||||
func _init(datamatrix : Matrix, headers : PoolStringArray = [], labels : PoolStringArray = [] , table_name : String = "") -> void:
|
func _init(datamatrix : Matrix, headers : PoolStringArray = [], labels : PoolStringArray = [] , table_name : String = "") -> void:
|
||||||
if labels.empty() : for label in range(datamatrix.get_size().x) : labels.append(label as String)
|
if labels.empty() : for label in range(datamatrix.get_size().x) : labels.append(label as String)
|
||||||
if headers.empty() : for header in range(datamatrix.get_size().y) : headers.append(ECUtilities.get_letter_index(header))
|
if headers.empty() : for header in range(datamatrix.get_size().y) : headers.append(MatrixGenerator.get_letter_index(header))
|
||||||
build_dataframe(datamatrix, headers, labels, table_name)
|
build_dataframe(datamatrix, headers, labels, table_name)
|
||||||
|
|
||||||
func build_dataframe(datamatrix : Matrix, headers : PoolStringArray = [], labels : PoolStringArray = [] , table_name : String = "") -> void:
|
func build_dataframe(datamatrix : Matrix, headers : PoolStringArray = [], labels : PoolStringArray = [] , table_name : String = "") -> void:
|
||||||
@ -21,7 +21,7 @@ func build_dataframe(datamatrix : Matrix, headers : PoolStringArray = [], labels
|
|||||||
self.dataset = build_dataset_from_matrix(datamatrix, headers, labels)
|
self.dataset = build_dataset_from_matrix(datamatrix, headers, labels)
|
||||||
|
|
||||||
func build_dataset(data : Array, headers : PoolStringArray, labels : PoolStringArray) -> Array:
|
func build_dataset(data : Array, headers : PoolStringArray, labels : PoolStringArray) -> Array:
|
||||||
var dataset : Array = [Array(headers)]
|
var dataset : Array = [Array([""]) + Array(headers)]
|
||||||
for row_i in range(data.size()): dataset.append([labels[row_i]]+data[row_i])
|
for row_i in range(data.size()): dataset.append([labels[row_i]]+data[row_i])
|
||||||
return dataset
|
return dataset
|
||||||
|
|
||||||
@ -30,16 +30,15 @@ func build_dataset_from_matrix(datamatrix : Matrix, headers : PoolStringArray, l
|
|||||||
return build_dataset(data, headers, labels)
|
return build_dataset(data, headers, labels)
|
||||||
|
|
||||||
func insert_column(column : Array, header : String = "", index : int = dataset[0].size()) -> void:
|
func insert_column(column : Array, header : String = "", index : int = dataset[0].size()) -> void:
|
||||||
assert(column.size() == datamatrix.rows(), "error: the column size must match the dataset column size")
|
headers.insert(index, header if header != "" else MatrixGenerator.get_letter_index(index))
|
||||||
headers.insert(index, header if header != "" else ECUtilities.get_letter_index(index))
|
|
||||||
datamatrix.insert_column(column, index-1)
|
datamatrix.insert_column(column, index-1)
|
||||||
dataset = build_dataset_from_matrix(datamatrix, headers, labels)
|
dataset = build_dataset_from_matrix(datamatrix, headers, labels)
|
||||||
|
|
||||||
func insert_row(row : Array, label : String = "", index : int = dataset.size()) -> void:
|
func insert_row(row : Array, label : String = "", index : int = dataset.size()) -> PoolStringArray:
|
||||||
assert(row.size() == datamatrix.columns(), "error: the row size must match the dataset row size")
|
|
||||||
labels.insert(index-1, label if label != "" else (index-1) as String)
|
labels.insert(index-1, label if label != "" else (index-1) as String)
|
||||||
datamatrix.insert_row(row, index-1)
|
datamatrix.insert_row(row, index-1)
|
||||||
dataset = build_dataset_from_matrix(datamatrix, headers, labels)
|
dataset = build_dataset_from_matrix(datamatrix, headers, labels)
|
||||||
|
return PoolStringArray([label] + row)
|
||||||
|
|
||||||
func get_datamatrix() -> Matrix:
|
func get_datamatrix() -> Matrix:
|
||||||
return datamatrix
|
return datamatrix
|
||||||
@ -59,14 +58,12 @@ func _to_string() -> String:
|
|||||||
for column in row:
|
for column in row:
|
||||||
var string_len : int = str(column).length()
|
var string_len : int = str(column).length()
|
||||||
last_string_len = string_len if string_len > last_string_len else last_string_len
|
last_string_len = string_len if string_len > last_string_len else last_string_len
|
||||||
var string : String = ""
|
var string : String = "\n"
|
||||||
for row_i in dataset.size():
|
for row_i in dataset.size():
|
||||||
if row_i == 0:
|
|
||||||
string+="%*s" % [last_string_len+1, ""] if get_dataset()[0].size() < get_dataset()[1].size() else ""
|
|
||||||
for column_i in dataset[row_i].size():
|
for column_i in dataset[row_i].size():
|
||||||
string+="%*s" % [last_string_len+1, dataset[row_i][column_i]]
|
string+="%*s" % [last_string_len+1, dataset[row_i][column_i]]
|
||||||
string+="\n"
|
string+="\n"
|
||||||
string+="\n['{table_name}' : {rows} rows x {columns} columns]\n".format({
|
string+="['{table_name}' : {rows} rows x {columns} columns]\n".format({
|
||||||
rows = datamatrix.rows(),
|
rows = datamatrix.rows(),
|
||||||
columns = datamatrix.columns(),
|
columns = datamatrix.columns(),
|
||||||
table_name = table_name})
|
table_name = table_name})
|
||||||
|
@ -4,15 +4,17 @@ class_name Matrix
|
|||||||
|
|
||||||
var values : Array = []
|
var values : Array = []
|
||||||
|
|
||||||
func _init(matrix : Array = []) -> void:
|
func _init(matrix : Array = [], size : int = 0) -> void:
|
||||||
values = matrix
|
values = matrix
|
||||||
|
|
||||||
func insert_row(row : Array, index : int = values.size()) -> void:
|
func insert_row(row : Array, index : int = values.size()) -> void:
|
||||||
assert(row.size() == values[0].size(), "the row size must match matrix row size")
|
if rows() != 0:
|
||||||
|
assert(row.size() == columns(), "the row size must match matrix row size")
|
||||||
values.insert(index, row)
|
values.insert(index, row)
|
||||||
|
|
||||||
func insert_column(column : Array, index : int = values[0].size()) -> void:
|
func insert_column(column : Array, index : int = values[0].size()) -> void:
|
||||||
assert(column.size() == values.size(), "the column size must match matrix column size")
|
if columns() != 0:
|
||||||
|
assert(column.size() == rows(), "the column size must match matrix column size")
|
||||||
for row_idx in column.size():
|
for row_idx in column.size():
|
||||||
values[row_idx].insert(index, column[row_idx])
|
values[row_idx].insert(index, column[row_idx])
|
||||||
|
|
||||||
@ -20,13 +22,13 @@ func to_array() -> Array:
|
|||||||
return values.duplicate(true)
|
return values.duplicate(true)
|
||||||
|
|
||||||
func get_size() -> Vector2:
|
func get_size() -> Vector2:
|
||||||
return Vector2(values.size(), values[0].size())
|
return Vector2(rows(), columns())
|
||||||
|
|
||||||
func rows() -> int:
|
func rows() -> int:
|
||||||
return values.size()
|
return values.size()
|
||||||
|
|
||||||
func columns() -> int:
|
func columns() -> int:
|
||||||
return values[0].size()
|
return values[0].size() if rows() != 0 else 0
|
||||||
|
|
||||||
func get_column(column : int) -> Array:
|
func get_column(column : int) -> Array:
|
||||||
assert(column < columns(), "index of the column requested (%s) exceedes matrix columns (%s)"%[column, columns()])
|
assert(column < columns(), "index of the column requested (%s) exceedes matrix columns (%s)"%[column, columns()])
|
||||||
@ -77,9 +79,3 @@ func _get(_property : String):
|
|||||||
else:
|
else:
|
||||||
if (_property as String).is_valid_integer():
|
if (_property as String).is_valid_integer():
|
||||||
return get_row(_property as int)
|
return get_row(_property as int)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -92,3 +92,7 @@ static func multiply_float(_matrix1 : Matrix, _float : float) -> Matrix:
|
|||||||
for y in range(_matrix1.to_array()[x].size()):
|
for y in range(_matrix1.to_array()[x].size()):
|
||||||
array[x][y]*=_float
|
array[x][y]*=_float
|
||||||
return Matrix.new(array)
|
return Matrix.new(array)
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
static func get_letter_index(index : int) -> String:
|
||||||
|
return "A B C D E F G H I J K L M N O P Q R S T U V W X Y Z".split(" ")[index]
|
||||||
|
Loading…
Reference in New Issue
Block a user