有没有办法使用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一起使用的免费库也是受欢迎的。
答案 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轴标签并垂直放置日期。