       @listenTo(@model, 'data_update', @render)
     else
       @listenTo(@model, 'data_update', @plot_view.request_render)
+
+  set_data: () ->
+    super(@mget('source'))
+    @set_visuals(@mget('source'))
 
   _set_data: () ->
     @label_div = ($("<div>").addClass('label').hide() for i in @text)

    for i in [0...@text.length]
      @visuals.text.set_vectorize(ctx, i)
      @width[i] = ctx.measureText(@text[i]).width
      @height[i] = ctx.measureText(@text[i]).ascent / 1.6 * 1.175
      [ @x_shift[i], @y_shift[i] ] = @_calculate_offset(ctx, @height[i], @width[i])

  _calculate_offset: (ctx, height, width) ->

      x_shift = -width

    if ctx.textBaseline == 'top'
      y_shift = 0.0
    if ctx.textBaseline == 'middle'
      y_shift = -0.5 * height
    if ctx.textBaseline == 'bottom'
      y_shift = -1.0 * height
    if ctx.textBaseline == 'alphabetic'
      y_shift = -0.8 * height
    if ctx.textBaseline == 'hanging'
      y_shift = -0.17 * height

    return [x_shift, y_shift]

  render: () ->
    @map_data()
    if @mget('render_mode') == 'canvas'
      @_canvas_text()
    else
