 
   if not clickRemove and create
     color    = legible fetchColor vars, node
-    lineData = ["x", "y"].filter (axis) ->
+    lineData = ["x", "y", "x2", "y2"].filter (axis) ->
       val = fetchValue vars, node, vars[axis].value
-      !(val instanceof Array) and axis isnt vars.axes.stacked and
+      val and !(val instanceof Array) and axis isnt vars.axes.stacked and
       vars[axis].mouse.value and axis isnt vars.axes.discrete
   else
     lineData = []
 
   lineInit = (line) ->
     line
-      .attr "x1", (d) -> if d is "x" then x else x - r
-      .attr "y1", (d) -> if d is "y" then y else y + r
-      .attr "x2", (d) -> if d is "x" then x else x - r
-      .attr "y2", (d) -> if d is "y" then y else y + r
+      .attr "x1", (d) -> if d.indexOf("x") is 0 then x else x - r
+      .attr "y1", (d) -> if d.indexOf("y") is 0 then y else y + r
+      .attr "x2", (d) -> if d.indexOf("x") is 0 then x else x - r
+      .attr "y2", (d) -> if d.indexOf("y") is 0 then y else y + r
       .attr "opacity", 0
 
   lineStyle = (line) ->


  rectStyle = (rect) ->
    getText = (axis) ->
      d3.select("text#"+axis+"_d3plusmouseaxislabel").node().getBBox()
    rect
      .attr "x", (d) ->
        width = getText(d).width
        if d is "x"
          x - width/2 - 5
        else
          graph.margin.left - vars[d].ticks.size - width - 10
      .attr "y", (d) ->
        mod = getText(d).height/2 + 5
        if d is "y" then y-mod else
          if node.d3plus.y0
            node.d3plus.y + (node.d3plus.y0 - node.d3plus.y)/2 +
            graph.margin.top - mod
          else graph.height + graph.margin.top + vars[d].ticks.size
      .attr "width", (d) -> getText(d).width + 10
      .attr "height", (d) -> getText(d).height + 10
      .style "stroke",


  lineUpdate = (line) ->
    line
      .attr "x1", (d) -> if d.indexOf("x") is 0 then x else x - r
      .attr "y1", (d) -> if d.indexOf("y") is 0 then y else y + r
      .attr "x2", (d) ->
        if d.indexOf("x") is 0
          x
        else if node.d3plus.x0
          node.d3plus.x0
        else if d is "y"
          graph.margin.left - vars[d].ticks.size
        else
          graph.margin.left + graph.width + vars[d].ticks.size
      .attr "y2", (d) ->
        if d.indexOf("y") is 0
          y
        else if node.d3plus.y0
          node.d3plus.y0
        else if d is "x"
          graph.height + graph.margin.top + vars[d].ticks.size
        else
          graph.margin.top - vars[d].ticks.size
      .style "opacity", 1

  lines = vars.g.labels.selectAll("line.d3plus_mouse_axis_label").data lineData
