我這裏有一個線型圖:http://jsbin.com/ugexag/1gRaphael圖書館 - 線型圖與多條線路,各個提示
可以在jsbin看,當你將鼠標懸停在一個「列」的數據,每一行通過顯示在工具提示hoverColumn()函數。我很想找到一種方法來讓工具提示僅在單個數據點懸停時出現。在gRaphael文檔中我沒有看到任何關於此的信息。
我這裏有一個線型圖:http://jsbin.com/ugexag/1gRaphael圖書館 - 線型圖與多條線路,各個提示
可以在jsbin看,當你將鼠標懸停在一個「列」的數據,每一行通過顯示在工具提示hoverColumn()函數。我很想找到一種方法來讓工具提示僅在單個數據點懸停時出現。在gRaphael文檔中我沒有看到任何關於此的信息。
有樣的linechart demo右下方象限的這個例子的。 我今天晚些時候看看它,並在這裏更新我所找到的內容。我懷疑hoverColumn
不使用,或者是創造性地運用,因爲當我用它,我得到了懸停事件y
是所有y
值對x
列的平均值。
更新:看完它後,我發現你找到了什麼,訣竅是隻有一個演示列排隊在兩條線。如果你每年都繪製圖表,你的年份列肯定會在所有行上重現。所以這不太方便。
我測試的是(在該線型圖演示控制檯連接):
var r = Raphael("holder");
var lines = r.linechart(330,250,300,220,[
[ 1, 2, 3, 4, 5, 6, 7],[ 2, 3, 4, 5, 6, 7, 8],[9,10]
],[
[10,10,10,10,10,10,10],[20,20,20,20,20,20,20],[5,25]
],{nostroke:false, axis:"0 0 1 1", symbol: "circle", smooth: true});
lines.hoverColumn(function(){
this.tags=r.set();
for(var i=0;i<this.y.length;i++){
this.tags.push(r.tag(this.x,this.y[i],this.values[i],160,10).insertBefore(this));
}
}, function(){
this.tags && this.tags.remove();
});
至少說明了問題。問題確實在於hoverColumn
和文檔。沒有提到hover
其實大部分信息都是一樣的傳遞給它的this
。所以,你可以重寫了最後陳述爲:
lines.hover(function({
this.tags=r.set();
this.tags.push(r.tag(this.x,this.y,this.value,160,10).insertBefore(this));
}, function(){
this.tags && this.tags.remove();
});
注意value
現在是單數和不帶指數,也沒有y
。
最後你可以通過刪除使用set()
的進一步簡化它:
lines.hover(function(){
this.tag = r.tag(this.x,this.y,this.value,160,10).insertBefore(this);
}, function(){
this.tag && this.tag.remove();
});
是的,這也正是在那裏我想出如何在首位添加標籤:)如果您發現該示例中,倒數第二個「標記」其實是兩個標籤一次,因爲它們是同一個垂直軸。我所有的數據點都在同一個垂直軸上,這樣會讓事情變得棘手。感謝您的回答! – Unfortunately
@Unfortunately我有一個使用'hover',而不是'hoverColumn'但尋找到這一點,並發現軸上的範圍,在軸線上的標記和網格線是不可配置不定製gRaphaël後,我修復要去建議你看一下谷歌圖表工具https://developers.google.com/chart/interactive/docs/roles#tooltiprole – dlamblin
雖然我不是特別擔心與源順藤摸瓜,使這項工作,我認爲最後我會尋找另一個圖書館。目前我傾向於D3。現在雖然我會繼續使用g.Raphael.js,並省略我圖表的MVP版本的標籤。謝謝你的幫助! – Unfortunately
我已經非常輕微抵消每條線的情節點取得了理想的結果,但它是非常煩躁。如果我進一步抵消,視覺上可以注意到這些情節是抵消的,而且看起來很糟糕。也許進一步抵消,然後重新定位是祕密,但不知道如何實現這一點。 http://jsbin.com/ugexag/2 – Unfortunately