#plot #chart #cli

已删除 plotka

Plotka 让您轻松在浏览器中可视化数据

0.1.0 2019年5月4日

#65#chart

MIT 许可证

47KB
1K SLoC

Plotka

Plotka 允许您通过 Websocket 轻松广播您的数据。它还可以托管您的 JS 客户端,以便您可以在浏览器中绘制数据。

它可以作为 Matplotlib 等软件的替代品。您可以在您喜欢的语言中编写您的模拟/计算/等等,并将结果通过 Plotka 输出。然后它将数据发送到您的 JS 客户端。

示例

$ mysimulation | plotka --static-path . csv --headers mass velocity position
$ echo my-results.txt | plotka --static-path . json

解析和数据格式

目前 Plotka 只能处理 CSV 和 JSON。我计划添加 TSV 支持。

Plotka 要求每条记录都必须有相同的字段。记录由换行符分隔。值以浮点数或整数存储。字段是强类型的,因此它们必须在每条记录中具有相同的类型。字段的类型根据它是否可以解析为整数来评估。以 .0 结尾的数字将被解析为浮点数。

CSV

csv 子命令接受 2 个参数。

  • --headers 参数(显然)允许您指定标题。目前它是必需的,但可能会更改。
  • --delimiter 参数允许您更改分隔符。

JSON

json 子命令不接受任何参数。输入的每一行都必须是一个有效的 JSON 对象。例如,如果文件以括号开始或结束,您必须将其删除。

设置 JS 客户端

默认情况下,Plotka 将其内部服务器绑定到 127.0.0.1:8080。您可以通过设置 --ip-address 参数来更改它。您的静态文件将在 /static/<path-to-your-file> 处托管。假设您的文件夹看起来像这样

my-static-files
├── index.html
└── js
   └── main.js

您可以通过 127.0.0.1:8080/static/js/main.js 访问您的主脚本。 / 将您重定向到 /static/index.html,因此您无需在 URL 栏中输入。

一个基本的 JS 客户端可能如下所示

const url = `ws://${window.location.host}/ws/`;
const ws = new WebSocket(url);

ws.onmessage = (e) => {
    const message = e.data;
    console.info("Received a message.");

    const request = JSON.parse(message);
    console.log(`Method name: ${request["method"]}`);
    console.log(`Params: ${request["params"]}`);
}

然后您可以使用您选择的绘图库。

如果您不知道使用哪个,请查看这些

接收更新消息

每个新连接的WS客户端将接收到一条包含记录存储最新状态的消息。这些消息遵循JSON RPC格式。

  • initStorage消息在data字段中包含一个JSON对象(记录)的列表。

    {
        "method": "initStorage",
        "params": {
            "data": [
                { "x": 10, "y": 1.15 },
                { "x": 11, "y": 1.16 },
                { "x": 12, "y": 1.17 },
                ...
            ]
        }
    }
    
  • pushRecord消息在record字段中包含一个单一的JSON对象。

    {
        "method": "pushRecord",
        "params": {
            "record": { "x": 13, "y": 1.18 }
        }
    }
    

待办事项

  • 修复错误处理并添加文档(!)。

  • --static-path参数设置为可选,并默认设置为当前目录。

  • --ignore-first参数添加到CSV子命令,以便用户可以选择是否忽略第一行。

  • 添加对TSV的支持。

  • 添加shell自动补全和手册。

  • 发布二进制文件。

  • 添加基准测试。

  • 添加允许以固定大小的数据包更新数据的方法。

    我想提供一个机制,允许你在一次只绘制一定数量的数据点时轻松管理数据。例如,如果你使用的是热图,这可能会很有用。

  • 添加对正则表达式的支持(?)。

  • 添加对日期解析的支持(?)。

警告

Plotka不会在您的计算机上保存数据。停止Plotka后,数据将会丢失。但是,这可能会在未来改变。

注意

Plotka处于alpha阶段。此外,请注意,我是一个业余爱好者,我主要是为了自己的需求创建它的。我将感激您的反馈。

依赖项

~29–40MB
~631K SLoC