如何使用Google图表API在X轴上使用日期?

时间:2009-06-19 21:19:03

标签: javascript asp.net vb.net google-visualization

有没有办法使用Google图表API绘制图表,以便X轴值是一个月内的天数?

我的数据点没有提供相同的频率。例如:

Date - Value
1/1/2009 - 100
1/5/2009 - 150
1/6/2009 - 165
1/13/2009 - 200
1/20/2009 - 350
1/30/2009 - 500

我想制作一个图表,将每个数据点与一个月内基于时间的相对距离分开。这可以使用Excel完成,但如何使用Google图表计算和显示它?

其他类似于谷歌图表的免费解决方案或可与ASP.NET一起使用的免费库也是受欢迎的。

5 个答案:

答案 0 :(得分:20)

  

更新现在,使用高级图表“带注释的图表”功能 - https://developers.google.com/chart/interactive/docs/gallery/annotationchart

直接在Chart API中支持

我已经在我的 ReHash Database Statistics 图表上做了这个(即使日期结果是均匀分布的,所以它并没有完全证明它正在这样做。)

首先,您希望获得整体时间段,这类似于图表的整体宽度。为此,我们从最新的日期中减去最早的日期。我更喜欢使用Unix-epoch时间戳,因为它们是整数并且易于以这种方式进行比较,但您可以轻松计算秒数等。

现在,循环浏览您的数据。对于每个日期,我们希望百分位数在整个期间中日期是从开头开始(即最早的日期是0,最新的日期是100)。对于每个日期,您首先要计算数据集中最早日期的当前日期的距离。基本上,“我们从一开始就有多远”。因此,从当前日期减去最早的日期。然后,为了找到百分位数,我们将当前日期的距离除以整个时间段,然后乘以100并截断或舍入任何小数以给出我们的积分的 x坐标

就这么简单!您的x值范围从0(图表的左侧)到100(右侧),每个数据点将与其真实时间距离的起点相距一段距离。

如果您有任何疑问,请随时提出!如果需要,我可以发布pesudocode或PHP。

答案 1 :(得分:11)

我遇到了同样的问题,在Google Charts上找到scatter plots,它确实发生了必要的事情。

这是我最终得到的代码(以他们为出发点):

function drawVisualization() {
    // Create and populate the data table.
    var data = new google.visualization.DataTable();
    data.addColumn('date', 'Date');
    data.addColumn('number', 'Quantity');
    data.addRow([new Date(2011, 0, 1), 10])
    data.addRow([new Date(2011, 1, 1), 15])
    data.addRow([new Date(2011, 3, 1), 40])
    data.addRow([new Date(2011, 6, 1), 50])


    // Create and draw the visualization.
    var chart = new google.visualization.ScatterChart(
        document.getElementById('visualization'));
    chart.draw(data, {title: 'Test',
                      width: 600, height: 400,
                      vAxis: {title: "cr", titleTextStyle: {color: "green"}},
                      hAxis: {title: "time", titleTextStyle: {color: "green"}},
                      lineWidth: 1}
              );
}

请注意,它们似乎从0开始计算数月,即1月为0,2月为1,...,12月为11。

答案 2 :(得分:8)

现在看来您可以使用高级图表执行此操作:

http://code.google.com/apis/visualization/documentation/gallery/annotatedtimeline.html

答案 3 :(得分:1)

这可以很容易地使用Google图表完成,但您的应用程序必须计算标签

chxl chart x label参数是您需要的参数。以下示例标记y轴,其中数字为50步,底部为日期

chxl=0:|0|50|100|150|200|250|300|350|400|450|500|1:|16/01/2009|26/01/2009|6/02/2009

答案 4 :(得分:0)

上。我和你一样思考着。我可以预见到标签相互覆盖的问题,并且只能考虑两种方法。

1)根据格式(星期一/星期二,星期一/星期二,1月1日/ 1月,1月1日,2月29日,2010年2月14日..etc)计算出每个日期的字数,然后计算您可以在图表宽度上放置多少个标签(可能会变得粗糙,涉及字母宽度(以像素为单位)(对于固定字体更容易),或者仅仅是一些试验和错误)。

当然,您的标签可能会直接与任何数据对齐。

2)使用多个X轴标签并垂直放置日期。