绘制具有较大值但值变化较小的图形

时间:2013-02-19 14:03:56

标签: algorithm graphics graph plot

我正在尝试绘制一个描绘进程内存消耗与时间的图表。在从SO获取帮助后,我能够消耗内存并使用Qt绘制图形。为了显示内存中的微小变化,我正在以字节为单位缩放Y轴。

我的问题是,通常消耗的内存是一个非常大的值,可以在我的图表中展示,它会从可见区域射出。

我研究here如何使用对数标度来避免这个问题。但这会导致另一个问题:

经过一段时间后,通常情况下,进程会在内存初始化时稳定下来,并且与此进程消耗的总内存相比,内存消耗的任何进一步变化都是非常小的值。因此,由于我正在进行缩放的日志,因此这些更改在我的图表中并不真正可见。但我的主要目的是以图形格式展示总内存消耗的这种变化。

我的方法是错误还是有更好的方法来实现这一目标?

在Qt / C ++ / qml中实现,但非常欢迎通用的想法。

例如

时间:0秒| 消费:0字节

时间:1秒| 消费:1212120字节

时间:2秒| 消费:1212520字节

时间:3秒| 消费:1212720字节

..消费在这段时间内稳定下来 - 现在只有很小的变化 -

时间:20秒| 消费:1212890字节

时间:21秒| 消费:1212893字节

时间:22秒| 消费:1212895字节

2 个答案:

答案 0 :(得分:2)

以下是一种方法:

  1. 图表更改,而不是绝对值。
  2. 使用插图或小图表(如地图中),显示图表角落的较大变化。在图表的主要部分,显示小的变化。
  3. 在主图表的另一角显示当前光标位置(单个数字)的内存使用量值。

答案 1 :(得分:2)

  • 分数幂(例如平方根)可能是一个考虑而不是对数。

  • 忽略第一个值。如果时间0的值始终为0,则可以考虑忽略它。它显着抵消了您的数据集。然后图表上的y-min可以是1212120,看起来会更好:

    Graph

  • 显示更改(时间x处的值 - 时间x-1处的值)而不是实际值(时间x处的值)也可能是一个好主意。