有没有一个命令行工具可以进行数据可视化和分析?

6
我正在寻找一个命令行工具(适用于Linux)来生成数据文件的图表。一开始我尝试使用gnuplot,但它的曲线拟合能力不太好。然后我尝试了R,但我找不到一种方法来写一个向量(在符号上方加小箭头)或热平均值(\left \langle \right \rangle 在LaTeX中)。是否有任何隐藏的插件可以完成此任务?

投票关闭为工具推荐。有关ASCII图,请参见:https://dev59.com/NXVD5IYBdhLWcg3wAGiD - Ciro Santilli OurBigBook.com
7个回答

5

以下是一种制作方法。输入文件应该有一个或多个数据列的格式。如果有两列或更多列,第一列将被用作X坐标在X,Y图中。

#! /usr/bin/env python

import sys
import matplotlib.pyplot as pyplot

for filename in sys.argv[1:]:
   with open(filename,'rt') as sf:
      table = []
      for line in sf: table.append( [float(val) for val in line.split()] )
      table = [ row for row in table if len(row) ] ## remove empty rows
      if len(table[0]) == 1 : pyplot.plot( [y[0] for y in table ] )
      for x in xrange(1,len(table[0])): pyplot.plot( [ y[0] for y in table ], [ y[x] for y in table ] )
pyplot.show()

1
matplotlib是我绝对最喜欢的库。它非常强大,如果它不能按照你想要的方式工作,也可以进行修改。 - Michael Wild
一些类似但更简洁的例子:https://dev59.com/Gmgu5IYBdhLWcg3winrU,https://dev59.com/NWct5IYBdhLWcg3wI6N6 - Brent Bradburn
嗨,这个问题刚刚被点赞了,我来这里看答案,最终我使用了Python。所以,你被标记为我的答案。谢谢。 - Yotam
如果你有一个 CSV 文件,你可以指定分隔符:split(",")。你可能还需要读取一行列标题:headers = sf.readline().split(",") - Brent Bradburn

1

在与xplot相同的精神下,您还可以使用ctioga2http://ctioga2.sf.net。绘制文本数据文件就像这样简单:

ctioga2 data.dat

生成一个名为Plot-000.pdf的PDF文件。但是,它不适合数据。

1

有一组命令行工具(mgl2png,mgl2eps,mgl2svg等),可以通过绘图生成图片。但是它们使用自己的脚本语言MGL(简单而快速)。它是GPL库MathGL的一部分。


1

有没有命令行工具

我理解这句话的意思是你想直接从Linux(例如Bash)命令行创建图形,而不需要在其他语言中创建脚本。

看起来答案是:实际上没有,除了一个例外:xplot

像大多数x*实用程序一样,它的用户界面非常“非现代化”。但它可以从简单的命令行生成图形,例如xplot a.txt b.txt


0

你尝试过PGF/TikZ吗?可能需要一些时间来适应它,但它具有一流的LaTeX集成(毕竟它是LaTeX的库),并且这个网站上有大量的示例。

当你弄清语法后,你可以编写一个简单的脚本,将所有需要的数据转换为适当的格式。

看一下GNUPLOT基础文章。它将向你展示如何使用PGF/TikZ调用Gnuplot,然后从外部文件加载结果。


0

我非常惊讶你认为gnuplot在曲线拟合方面表现不佳。在我的经验中,gnuplot在这方面是无与伦比的。但是我的经验确实有限,所以您可能更了解。

无论如何,我找到了这个链接,希望能对您有所帮助: http://www.cs.hmc.edu/~vrable/gnuplot/using-gnuplot.html 它有一个关于曲线拟合的部分。


gnuplot 的主要问题是它只使用最小二乘法。 - Yotam

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接