【问题标题】:Easy way to plot and display arrays?绘制和显示数组的简单方法?
【发布时间】:2011-05-09 17:57:34
【问题描述】:

第一次发帖。在 Visual Studio 2008 中使用 C。如有必要,可以使用 VS 2005。

  1. 如何像在电子表格中一样在数组中显示数值数据?
  2. 如何在数组中绘制数值数据?

这些似乎是简单的问题。但我找不到解决方案。到目前为止,我会将数据打印到文件中,导入 Excel 并查看/绘图。然而,这个代码有太多的数组——所以打印/导入/绘图很累。 一些限制。

  1. 我不想编写 20 多行代码来完成上述操作。 MATFOR 或 Array Visualizer 可让您通过单行函数调用进行绘图。
  2. 他们无法以方便的格式显示数据。我想在一两个窗口中显示数据和绘图,以便它们同时可见。
  3. 这是一个 win32 控制台应用程序——所有代码都是可移植的。
  4. 将在调试期间使用这些。
  5. 免费或付费。

虽然我正在寻找特定的东西,但对于任何使用数组和矩阵进行数值工作的人来说,要求基本相同——同时显示数据和绘图。 我希望已经编写了这样的工具并且可以使用。 我也愿意接受将数组数据输出到 Excel 工作表(可以保持 Excel 处于打开状态)的解决方案,如果它也可以绘图,那可能很棒,但我可以不绘图。

PS:我只有在调试代码时才需要这个。

【问题讨论】:

    标签: c arrays matrix plot


    【解决方案1】:

    有几种方法可以做到这一点,但这需要编写一些代码。可视化数据通常简单直接,但要以您希望的方式准确可视化数据需要一些额外的代码和工作。

    有几种可视化数据的选项:

    BASH 和 GNUPLOT 的组合

    使用 MATLAB 或 OCTAVE 进行所有计算和可视化

    使用 PYTHON 和 SciPy 以及 matlibplot 库。

    Gnuplot 是绘制数据的好工具,但使用起来很麻烦。如果您花时间正确绘制绘图并与 LaTeX 完美结合,并且对任意函数具有良好的拟合实现,它看起来很棒。访问 http://gnuplot-tricks.blogspot.ch/ 很棒的网站,了解有关 gnuplot 的所有信息。

    MATLAB 等数值程序及其等效的开源 OCTAVE 非常棒,因为它们是数值程序的快速实现语言,并且具有大量的附加库,尤其是 MATLAB。对于高负载的数值计算,它真的很慢,而且绘图库仅适用于基本绘图需求。

    使用 PYTHON 及其科学编程库(SciPy 和 matlibplot)是一个很好的组合。这允许出色的绘图,它不像 gnuplot 到 plrogram 那样神秘,并且在绘图方面比 MATLAB 更灵活。此外,它还为您提供了 MATLAB 等数值编程环境。

    【讨论】:

      【解决方案2】:

      我使用ArrayDebugView,这是您在 Visual Studio 中安装的插件,可在您调试应用程序时从数组中绘制图形。它作为调试模式下变量监视的可视化方式。不用写一行代码。

      【讨论】:

        【解决方案3】:

        为此,我制作了一个简单的绘图程序。只有一个文本框用于粘贴数据和一个图表。

        数据需要采用任何一种形式:

        • 带有自动 X(每个值加 1):seriesName 值
        • 对于指定的 X 和 Y:seriesName xvalue yvalue

        大部分时间我都用来绘制来自跟踪点的数据。 我复制/粘贴 VS 的整个输出窗口,绘图程序会忽略不遵循这两种形式的任何内容(因此我不必清理字符串并将其放入 excel 中)。

        它可以做折线图、点图、柱图、面积图和保存图像、复制到剪贴板。

        MiniPlot

        【讨论】:

          【解决方案4】:

          我使用 GNUPlot (http://www.gnuplot.info/) 来显示我的性能/加速测量值。 我将我的数字打印到标准输出并编写了一个 bash 脚本来组合这些数字并调用 gnuplot 进行渲染。

          【讨论】:

            【解决方案5】:

            为了在数组中显示数值数据,您应该将指向您要观察的第一个数据元素的指针添加到手表中 --- 如果您想从头开始观察数组,它只是数组name,它是指向第一个元素的指针。要查看多个元素,请在指针后添加“,”,后跟要观察的元素数量。 例如,为了观察float farray[100];的元素,你应该在手表中添加farray,100

            为了绘图,您可以从手表复制粘贴到绘图软件(即excel),但不是很方便,因为您不能单独复制数据列,但左右列也可以,因此需要额外的手动编辑。

            【讨论】:

              【解决方案6】:

              我想不出有任何库可以在不到 20 行代码的情况下在控制台应用程序中实现您想要的功能。我的建议是使用 MATLAB og GNU Octave 编写绘图步骤脚本来进行实际绘图。

              【讨论】:

              • 只有在调试代码时才需要这个,而不是在运行控制台应用程序时。
              猜你喜欢
              • 2011-10-16
              • 2017-02-03
              • 1970-01-01
              • 1970-01-01
              • 2022-12-10
              • 2015-04-11
              • 2014-12-25
              • 1970-01-01
              • 2018-01-08
              相关资源
              最近更新 更多