       .attr "font-family", (d) -> vars[d].ticks.font.family.value
       .attr "font-weight", (d) -> vars[d].ticks.font.weight
       .attr "x", (d) ->
-        if d is "x" then x else graph.margin.left - 5 - vars[d].ticks.size
+        if d.indexOf("x") is 0
+          x
+        else if d is "y"
+          graph.margin.left - 5 - vars[d].ticks.size
+        else
+          graph.margin.left + graph.width + 5 + vars[d].ticks.size
       .attr "y", (d) ->
-        if d is "y" then y else
-          if node.d3plus.y0
-            node.d3plus.y + (node.d3plus.y0 - node.d3plus.y)/2 +
-            graph.margin.top - 6
-          else
-            graph.height + graph.margin.top + 5 + vars[d].ticks.size
+        if d.indexOf("y") is 0
+          y
+        else if node.d3plus.y0
+          node.d3plus.y + (node.d3plus.y0 - node.d3plus.y)/2 +
+          graph.margin.top - 6
+        else if d is "x"
+          graph.height + graph.margin.top + 5 + vars[d].ticks.size
+        else
+          graph.margin.top - 5 - vars[d].ticks.size - (vars[d].ticks.font.size * 1.35)
       .attr "fill",
         if vars.shape.value is "area"
           "white"


  if not clickRemove and create
    color    = legible fetchColor vars, node
    lineData = ["x", "y"].filter (axis) ->
      val = fetchValue vars, node, vars[axis].value
      !(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 "opacity", 0

  lineStyle = (line) ->


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