1

積み上げ面グラフの各レイヤーに表示されるデータ型を表示するポップアップを追加しようとしています。これが私がこれまでに行ったことです:

基本的に、積み上げ面グラフのいずれかのレイヤーにマウスを合わせると、ポップアップに同じタイプが表示されます。その理由はわかりますが、マウスがそのレイヤーの上にあるときに 1 つの値を状態にする方法がわかりません。 2 番目のレイヤーを超える場合は、他の値。

誰か助けてください。

    /* y-axis scale is the largest data item scaled to height of the panel */
        yScale = pv.Scale.linear(0, pv.max(data, function (d) {
            var totalValue = 0;
            for (i = 0; i < stackLayers.length; i++) {
                totalValue = totalValue + d[stackLayers[i]];
            }
            return totalValue;
        })).range(0, h),

        colors = pv.Colors.category20().range();


    /* render the area's using the predefined protovis stack layout */
    vis.add(pv.Layout.Stack)
        .layers(stackLayers)
        .values(data)
        .x(function (d) {
            return xScale(d.x);
        })
        .y(function (d, p) {
            return yScale(d[p]);
        })
        .layer.add(pv.Area)
        .interpolate("cardinal")
        .tension(0.97)
        .fillStyle(function (d) {
            return colors[this.parent.index];
        })
        .text(function (d) {
                if(stackLayers[i]== "HAL")
                {return "Dave";}
                else
                {return "Sorry";}
/*              return (stackLayers[i]== "Hal" ? "Dave" : "Sorry");*/
        })
        .event("mouseover", pv.Behavior.tipsy({gravity:"s", fade:true}))
        .anchor("top").add(pv.Line)
        .strokeStyle(function (d) {
            return colors[this.parent.index].darker();
        })
        .interpolate("cardinal")
        .tension(0.97)
        .lineWidth(2);

    /* Y-axis rule. */
    vis.add(pv.Rule)
        .data(yScale.ticks(5))
        .left(0)
        .width(w)
        .bottom(yScale)
        .strokeStyle(function (d) {
            return d ? "rgba(128,128,128,.2)" : "#000";
        })
        .anchor("left").add(pv.Label)
        .text(yScale.tickFormat);
4

0 に答える 0