ansi-chart
Version:
A lightweight and simple tool for rendering beautiful charts directly in your terminal using only ANSI-compatible ASCII characters. Create bar charts, line graphs, and more with customizable styles, all without external dependencies. Perfect for CLI appli
71 lines • 1.9 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Dataset = void 0;
class Dataset {
constructor(values) {
if (!values)
this.values = [];
else
this.values = values;
}
rows(indices) {
return new Dataset(this.values.filter((r, i) => indices.includes(i)));
}
columns(indices) {
return new Dataset(this.values.map((v) => v.filter((v, i) => indices.includes(i))));
}
row(index) {
return this.values[index];
}
column(index) {
return this.values.map((v) => v[index]);
}
get(row, column) {
return this.values[row][column];
}
set(row, column, value) {
this.values[row][column] = value;
}
append(value) {
this.values.push(value);
return this;
}
toArray() {
return this.values;
}
get size() {
return {
rows: this.values.length,
columns: this.values[0]?.length ?? 0,
};
}
sum(column) {
return this.column(column).reduce((acc, cur) => acc + cur);
}
mean(column) {
return this._mean(this.column(column));
}
median(column) {
const col = this.column(column);
col.sort(function (a, b) {
return a - b;
});
const mid = col.length / 2;
return mid % 1 ? col[mid - 0.5] : (col[mid - 1] + col[mid]) / 2;
}
variance(column) {
const col = this.column(column);
const mean = this._mean(col);
return this._mean(col.map(function (num) {
return Math.pow(num - mean, 2);
}));
}
standardDeviation(column) {
return Math.sqrt(this.variance(column));
}
_mean(array) {
return array.reduce((acc, cur) => acc + cur) / array.length;
}
}
exports.Dataset = Dataset;
//# sourceMappingURL=dataset.js.map