您会为此问题选择哪种类型的图表,以及图表库可以提供哪些图表?

时间:2010-02-19 17:06:32

标签: language-agnostic open-source visualization charts

假设我有N个段,每个段都有一个开始值和一个结束值,例如:

[1,40],[40,80],[80,100],[90,110]

我想创建一个图表,我可以在其中显示所有这些图表,以便我可以看到第四个段与第三个段的值重叠。

我是图表新手,您能否建议我可以使用哪种图表来解决这类“问题”?此外,如果您能够建议支持该类型图表的库,那就太棒了。我可以使用以下任何一种:Java,Ruby,Python,Perl,.NET。将生成此类图表的应用程序将在Windows计算机上运行。

谢谢!

8 个答案:

答案 0 :(得分:3)

恕我直言,我建议你使用一个简单的条形图,使用伟大的Google Bar Charts API。例如,对于您问题中提供的数据,我会像这样做一个网址

http://chart.apis.google.com/chart?cht=bvg&chs=320x280
&chco=4D89F9,C6D9FD&chbh=r,0.5,3.0
&chds=0,130&chxt=x,y&chxr=1,0,130,0&chxl=0:|a|b|c|d|
&chd=t:1,40,80,90|40,80,100,110

...谷歌会给我一张这样的图表。

Google Chart API for your data

如您所见,这是一个简单的GET请求。现在他们也支持POST requests

事实上,我建议您在Google's Chart Gallery进行简单搜索。即使你不打算使用它,至少你会为你的项目提供一些非常好的例子。

(这种方法的明显缺点是需要互联网连接。但条形图建议仍然有用。)

答案 1 :(得分:3)

您可以使用Xinxua's answer在python中实现matplotlib之类的内容,如下所示:

import matplotlib.pyplot as plt
from pylab import zeros

data = [[1,40],[40,80],[80,100],[90,110]]
N = len(data)
plt.figure()
start_points = [x[0] for x in data]
lengths = [x[1]-x[0] for x in data]
z = zeros(N)
plt.errorbar(x=start_points, y=range(N), xerr=[z,lengths], fmt='o', xuplims=True)
plt.grid(True)
plt.axis(ymax=N-.5)

哪会给你 image of results using matplotlib http://www.freeimagehosting.net/uploads/ea438bb4de.png

答案 2 :(得分:3)

使用Google Charts API创建堆叠条形图,如下所示:

http://chart.apis.google.com/chart?
    cht=bhs&chs=400x150&chco=eeffee,009933&chbh=r,0.5,2.0&chds=0,120&
    chxt=x,y&chxr=0,0,120,20|1,1,5&chd=t:1,40,80,90|39,40,20,20
                                                          ^^

将第一个系列设为白色,以便不显示。 (我使用浅绿色显示其工作原理;在上面的网址中将eeffee更改为ffffff以使其变为白色。)

请注意,您需要计算实际数据的宽度,例如:对于条目[80,100],您需要使用20作为宽度,如上面的URL中所示。

Bar chart for example data

答案 3 :(得分:2)

我可以想到图表的类型,如下所示。也许是时间表。 (或甘特图)

|  #######
|         ########
|                 ########
|                       #########
------------------------------------
   1     40      80    90  100  110

(抱歉,我有点茫然)。可能有人会提出图表api。 :d

答案 4 :(得分:1)

也许你想要更多的润色,以下将基本上做你需要的:

在您的示例中,我只使用每个数字对作为每个项目的开始和结束时间。 如果他们只是数字就没关系......看看monet例子......它使用一些事件开始/结束时间作为简单的数字(即:1845和1846)。

使用它来跟踪“事件”的生命周期或检查票证对于查看正在发生的事情非常有用。

答案 5 :(得分:0)

您可以使用支持起始值的柱形图,例如amCharts,或者您可以使用烛台图表,其中open / high设置为相同的第一个值,而close / low则设置为秒。

答案 6 :(得分:0)

如果您将使用.net,则可以尝试Infragistics控件。如果您使用的是WPF或Silverlight,并且想要免费的,可以尝试WPF ToolkitVisifire

答案 7 :(得分:-1)

http://pchart.sourceforge.net/ PChart for PHP是一个非常好的图表库,他们也有一个信息丰富的教程