在终端指挥官 CLI 中绘制图表

问题描述 投票:0回答:2

我打算开展一个项目,使用 Commander 构建一个 CLI,向 API 发出请求。

我想知道如何在终端中添加类似于 this 的基本图表以及终端中的图形功能(类似于 GitHub 贡献图)。

我无法为此找到好的 npm 包(Python 替代方案是 termgraph),感谢任何帮助。

javascript node.js api charts command-line-interface
2个回答
7
投票

我不知道有哪个软件包可以为终端显示图表,但是,您可以使用

chalk
来完成这一切。

这个包允许您在终端内显示颜色,您的工作就是格式化

console.log
,以便以正确的颜色和宽度打印。

否则,使用 terminal+

chart
关键字在
npm
上快速搜索,得到了以下有趣的结果:


0
投票

正如 @Dimitri 所建议的,您可以看一下使用 Node.js 的 chalk 包的简单示例。

chart.js

import chalk from 'chalk';

const rankingsData = {
  "Rankings": [
    8267,
    10747
  ],
  "Long Rankings": [
    6150,
    10494
  ],
  "Short Rankings":[
    0,
    3670
  ]
}

// Calculate the maximum value in the set. Will be used in normalization (see below):
const max = Math.max(...Object.values(rankingsData).flat());

// Helper function to 'normalize' values down to 100% according to min/max:
function normalize(value){
  return ( Math.floor((((value - 0) / (max - 0)) * 100)/2) )
}

Object.entries(rankingsData).forEach((([key, [first, second]])=>{

  const firstLength = " ".repeat(normalize(first));
  const secondLength = " ".repeat(normalize(second));

  console.log(
    key.padEnd(15," ") + ":", 
    chalk.bgBlue.bold(firstLength), 
    first + ".00"
  );
  console.log(
    " ".padEnd(16," "), 
    chalk.bgRed.bold(secondLength), 
    second + ".00"
  );
  // console.log("\n");
}));

$ npm install chalk
$ node chart.js

Screenshot of the generated chart

© www.soinside.com 2019 - 2024. All rights reserved.