你運行到這裏的幾個問題:
- 因爲你所做的x軸的時間尺度,我猜你真正想要的價格是變量y,而日期是x變量。這就是爲什麼
x(d.price)
是消極的--D3正試圖將價格解釋爲日期,而這最終並沒有太大意義。因此,用上面的代碼替換上面的代碼行:.attr('cy', function(d){ return y(d.price) })
- 爲了實際上有可見的圓,它們需要設置三個參數:
cx
,cy
和r
。由於d3已經知道您的x軸是時間刻度,因此您可以使用.attr('cx', function(d){ return x(d.date) })
來設置cx
。您可以將r
設置爲您想要圈選的半徑。只需選擇一個,或默認爲0,您將無法看到圈子。例如,.attr('r', 4)
會將半徑設置爲完全可見的值4.
- 您在繪製線條之前正在繪製圓。結果,這些線條被畫在圓圈上,看起來很奇怪。因此,如果您想避免這種情況,請將圓圈代碼移至行代碼後面。
全部放在一起,這大致是創建你的圈子中的代碼應該是什麼樣子,你聲明var paths
後,應該去:
var circles = company.selectAll('circle')
.data(function(d){ return d.values; })
.enter().append('circle')
.attr('cy', function(d){
return y(d.price);}) //Price is the y variable, not the x
.attr('cx', function(d){
return x(d.date);}) //You also need an x variable
.attr('r',4); //And a radius - otherwise your circles have
//radius 0 and you can't see them!
更新jsbin: http://jsbin.com/gorukojoxu/edit?html,console,output
謝謝您!這很有道理,我想我昨天盯着屏幕太長了。任何想法如何使點與每個機會的路徑具有相同的顏色? – tr3online
如果你的數據集中不會有數量可觀的公司,最簡單的做法可能就是給每個人一個顏色屬性並調用它。 – seaotternerd
我剛剛做了一些hacky'd3.select(this.parentNode.parentNode).datum()。color'。它目前適用。再次感謝您的幫助。 – tr3online