2010-10-03 69 views
0

我試圖通過GChartWrapper庫與Google Chart API進行XYLineGoogle Chart API:渲染XYLine圖時出現問題

下面是應該生成圖形代碼的一部分:

data = [] 
traffic_max = 0 
date_minmax = [] 

#I have a number of timestamped readings in two series 
for site in sites: 
    site_data = get_datapoints_for(site) 

    date_values = [datetime_to_unix(item.timestamp) for item in site_data] 
    date_minmax = minmax(date_minmax + date_values) #get min and max values for 
                #scaling 
    traffic_values = [item.traffic for item in site_data] 
    traffic_max = max(traffic_max, *traffic_values) #just get maximum for readings 

    #build graph 
    data.append(date_values) 
    data.append(traffic_values) 

#add leeway to axes 
date_minmax[0] -= 500 
date_minmax[1] += 500 
traffic_max /= 0.9 

#build graph 
chart = LineXY(data) 
chart.legend(*sites) 
chart.color("green", "red") 
chart.size(600,400) 
chart.scale(date_minmax[0], date_minmax[1], 0, traffic_max) 
chart.axes.type("xy") 
chart.axes.range(0, *date_minmax) 
chart.axes.range(1, 0, traffic_max) 

chart_url = chart.url 

然而,這是我所得到的:

link text

問:發生了什麼事紅色系列?


爲方便起見,這裏是data一些漂亮的打印後愛:

[[1286116241.448437, 1286118544.4077079, 1286119431.18503, 1286121011.5838161], 
[6710.9899999999998, 
    6716.2799999999997, 
    6641.8900000000003, 
    6644.9499999999998], 
[1286116241.979831, 
    1286118545., 
    1286119431.9650409, 
    1286121012.1839011], 
[38323.860000000001, 
    38326.620000000003, 
    38327.660000000003, 
    38329.610000000001]] 

這裏是由包裝器生成的參數列表,之後也有一些漂亮的印刷愛:

chco=008000,FF0000 
chd=t:1286116241.0,1286118544.0,1286119431.0,1286121011.0 
    6711.0,6716.3,6641.9,6644.9 
    1286116241.0,1286118545.0,1286119431.0,1286121012.0 
    38323.9,38326.6,38327.7,38329.6 
chdl=gaming.stackexchange.com 
    serverfault.com 
chds=1286115741.0,1286121512.0,0,42588.4555556 
chs=600x400 
cht=lxy 
chxr=0,1286115741.0,1286121512.0 
    1,0,42588.4555556 
chxt=x,y 
cht=lxy 
chxr=0,1286116241.45,1286121012.18 
    1,0,42588.4555556 
chxt=x,y 

回答

0

問題出在這裏:

chart.scale(date_minmax[0], date_minmax[1], 0, traffic_max) 

Google API允許您爲每個系列定義不同的比例。因此,您需要爲每個系列指定比例,而上述僅影響第一個系列。

更改該行:

chart.scale(*[date_minmax[0], date_minmax[1], 0, traffic_max]*len(sites)) 

...強制所有系列以相同的縮放。