2013-07-03 59 views
1

我想使用默認線條加條形圖製作圖表,但我想在條形中使用兩條或多條流線,有可能嗎?線條加多欄與多條?

當前,當我嘗試這樣做時,我在圖表的效果上遇到了一些麻煩,所以我無法正確顯示酒吧的懸停氣球,他總是隻顯示其中一個的數據流。但主要問題是x軸的日期,顯示1970年的日期,當我刪除第二條酒吧,日期顯示: Current chart

任何人都已經試圖成功做這種圖表?

編輯

添加小提琴:

Fiddle with two columns stream and messy dates

Fiddle with just one column stream and ok dates

我打電話這種圖形:

linePlusBarChart() 
+0

我看不出有什麼理由爲此而無法工作;你可以發佈到jsfiddle或bl.ocks.org隔離你遇到的問題嗎? –

+0

剛剛發佈了小提琴@AdamPearce,再次感謝您回答我! –

回答

1

的概率與日期相比,您的數據包含時間戳(即以秒爲單位),但Javascript預計毫秒。這是很容易通過固定的值乘以1000:

series.values = series.values.map(function (d) { 
      return { 
       x: d[0]*1000, 
       y: d[1] 
      } 
}); 

的提示問題,實際上是在NVD3錯誤 - 它並不意味着使用這種方式。這個問題歸結爲mouseover處理程序,假設第一項數據代表您想要的內容。您可以通過數據點數模2選擇項(因爲是兩個酒吧)解決這一問題爲你的情況:

.on('mouseover', function(d,i) { 
     d3.select(this).classed('hover', true); 
     dispatch.elementMouseover({ 
      point: d, 
      series: data[i%2], 
      pos: [x(getX(d,i)), y(getY(d,i))], 
      pointIndex: i, 
      seriesIndex: i%2, 
      e: d3.event 
     }); 
     }) 

這將僅適用於正好有兩個酒吧系列的工作,雖然。使用修改過的NVD3代碼here更新了jsfiddle。

+0

請再看一遍。橙色欄顯示藍色欄的工具提示。你能告訴我爲什麼日期在第二個例子中正確顯示,沒有做這個轉換? –

+1

啊,我明白了。請看我更新的答案。 –

+0

謝謝@LarsKotthoff!你的jsfiddle工作正常。但是還有一個左邊的bug,當我點擊隱藏它不會隱藏的橙色條時,就會獲得藍色。有一種方法可以解決它? –