python 下有什么 tui 可以画折线图?
这是一个 nvtop 的程序画出来的折线图
可以反应显卡的利用率和内存占用率的时序变化
我想用 python 写一个的话,有什么 tui 可以让我方便的实现呢?
这个 nvtop 是 c 写的,我不懂 c
我看到 python 下有两个出名的 tui 包
- textual
- pytermgui
但是其中都没有画折线图的 demo 代码样例
谁能帮帮我?
回答:
使用matplotlib
, 具体的使用方法可以参考下面:
https://www.cnblogs.com/hgrun...
https://blog.csdn.net/qq54281...
回答:
- ASCIIGraph:可以轻松地将数据转换为文本表格或折线图
from asciigraph import AsciiGraphgraph = AsciiGraph()
data = [10, 12, 13, 14, 12, 10]
print(graph.plot(data))
- termplotlib:在终端中绘制折线图的Python库,它使用Matplotlib进行绘图
from termplotlib import plotdata = [10, 12, 13, 14, 12, 10]
plot(data)
- console-line-chart:可以绘制简单的折线图
from console_line_chart import ConsoleLineChartdata = [10, 12, 13, 14, 12, 10]
chart = ConsoleLineChart()
chart.plot(data)
回答:
- 标准库 curses
- 第三方库 blessed
glances、nvitop 用的是 curses,curses 是标准库里面的
使用 curses 实现一个按照内存使用率升序排序的 『简易htop』
python">import cursesimport psutil
def draw_header(stdscr):
stdscr.addstr(0, 2, "PID")
stdscr.addstr(0, 10, "Name")
stdscr.addstr(0, 40, "CPU (%)")
stdscr.addstr(0, 50, "Memory (%)")
def draw_processes(stdscr, processes):
max_y, max_x = stdscr.getmaxyx()
for i, process in enumerate(processes, start=1):
if i >= max_y:
break
stdscr.addstr(i, 2, str(process.info['pid']))
stdscr.addstr(i, 10, process.info['name'])
stdscr.addstr(i, 40, f"{process.info['cpu_percent']:.1f}")
stdscr.addstr(i, 50, f"{process.info['memory_percent']:.1f}")
def main(stdscr):
curses.curs_set(0)
stdscr.clear()
stdscr.refresh()
# 获取进程信息
processes = list(psutil.process_iter(attrs=['pid', 'name', 'cpu_percent', 'memory_percent']))
processes = sorted(processes, key=lambda p: p.info['memory_percent'], reverse=True)
while True:
stdscr.clear()
draw_header(stdscr)
draw_processes(stdscr, processes)
stdscr.refresh()
stdscr.getch()
curses.wrapper(main)
以上是 python 下有什么 tui 可以画折线图? 的全部内容, 来源链接: utcz.com/p/938752.html