mirror of
https://github.com/Relintai/pandemonium_engine_easy_charts.git
synced 2025-02-24 17:14:20 +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:
|
||||
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)
|
||||
|
||||
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)
|
||||
|
||||
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])
|
||||
return dataset
|
||||
|
||||
@ -30,16 +30,15 @@ func build_dataset_from_matrix(datamatrix : Matrix, headers : PoolStringArray, l
|
||||
return build_dataset(data, headers, labels)
|
||||
|
||||
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 ECUtilities.get_letter_index(index))
|
||||
headers.insert(index, header if header != "" else MatrixGenerator.get_letter_index(index))
|
||||
datamatrix.insert_column(column, index-1)
|
||||
dataset = build_dataset_from_matrix(datamatrix, headers, labels)
|
||||
|
||||
func insert_row(row : Array, label : String = "", index : int = dataset.size()) -> void:
|
||||
assert(row.size() == datamatrix.columns(), "error: the row size must match the dataset row size")
|
||||
func insert_row(row : Array, label : String = "", index : int = dataset.size()) -> PoolStringArray:
|
||||
labels.insert(index-1, label if label != "" else (index-1) as String)
|
||||
datamatrix.insert_row(row, index-1)
|
||||
dataset = build_dataset_from_matrix(datamatrix, headers, labels)
|
||||
return PoolStringArray([label] + row)
|
||||
|
||||
func get_datamatrix() -> Matrix:
|
||||
return datamatrix
|
||||
@ -59,14 +58,12 @@ func _to_string() -> String:
|
||||
for column in row:
|
||||
var string_len : int = str(column).length()
|
||||
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():
|
||||
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():
|
||||
string+="%*s" % [last_string_len+1, dataset[row_i][column_i]]
|
||||
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(),
|
||||
columns = datamatrix.columns(),
|
||||
table_name = table_name})
|
||||
|
@ -4,15 +4,17 @@ class_name Matrix
|
||||
|
||||
var values : Array = []
|
||||
|
||||
func _init(matrix : Array = []) -> void:
|
||||
func _init(matrix : Array = [], size : int = 0) -> void:
|
||||
values = matrix
|
||||
|
||||
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)
|
||||
|
||||
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():
|
||||
values[row_idx].insert(index, column[row_idx])
|
||||
|
||||
@ -20,13 +22,13 @@ func to_array() -> Array:
|
||||
return values.duplicate(true)
|
||||
|
||||
func get_size() -> Vector2:
|
||||
return Vector2(values.size(), values[0].size())
|
||||
return Vector2(rows(), columns())
|
||||
|
||||
func rows() -> int:
|
||||
return values.size()
|
||||
|
||||
func columns() -> int:
|
||||
return values[0].size()
|
||||
return values[0].size() if rows() != 0 else 0
|
||||
|
||||
func get_column(column : int) -> Array:
|
||||
assert(column < columns(), "index of the column requested (%s) exceedes matrix columns (%s)"%[column, columns()])
|
||||
@ -77,9 +79,3 @@ func _get(_property : String):
|
||||
else:
|
||||
if (_property as String).is_valid_integer():
|
||||
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()):
|
||||
array[x][y]*=_float
|
||||
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