2013-03-15 66 views
1

我正在为客户端应用程序创建一些条形图。我遇到的问题是数据主要由小值组成,但很少有基本上破坏可视化的大值。海图的数据处理?

值的一些例子:

96,942,535,341 
23,598 
1,219,203 
958,201 
100,654 
112,911 

我有一个250个像素的最大高度的工作。所以,现在我找到数据集中的最大值并将其设置为最大高度。然后我计算其余值的像素/值比率。如果你做数学,你会发现其他的条纹甚至不会达到1个像素!

有没有人有更好的方法来计算这些比率,使图表工作可视化...或者我沉没?

我在后端使用php来执行计算和JavaScript例程,用于在飞行中创建图表。

+0

你需要问自己图表试图传达什么。当你知道这一点时,你可能会知道如何可视化它。例如。您可能跳过这些较大的值,或者在最大高度处将它们剪掉,并让用户知道它们超出框架。 – 2013-03-15 13:53:15

+0

使用日志比例? (虽然条形图中不是很常见,但是...) – 2013-03-16 02:34:02

回答

1

一些选项:

  • 使用logarithmic scale
  • 取最大值和平均值之间的任意值,并将其作为图表的最大高度。这有效地“切断”了大数值。不幸的是,这需要进行大量的试验和错误才能找到最佳位置,并且很大程度上取决于您拥有的数据类型。
+0

嗯。由于数据是动态的,这可能会变得粘滞。 – onedeadgod 2013-03-15 13:56:02

+0

我同意,_sticky_是在此使用的适当术语。考虑一下,我会提出类似'min((avg * x),max)'的方法,其中x介于'2'和'Inf​​'之间,具体取决于您要显示多少大棒。 – svckr 2013-03-15 14:06:13

+0

那么,只要在php中使用标准的log()函数至少可以使可视化工作更好一点。不过,我想我会尝试你的最新建议。我假设x是最大值和平均值之间的数字,对吗?从这些价值中间开始会更好吗? – onedeadgod 2013-03-15 14:34:43