Sha256: 4c31d1a6e089719dfff127466089296d6e5fd302f61f5d80d2d4fa6b52fea653

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

require 'pycall'

module Matplotlib
  module IRuby
    AGG_FORMATS = {
      "image/png" => "png",
      "application/pdf" => "pdf",
      "application/eps" => "eps",
      "image/eps" => "eps",
      "application/postscript" => "ps",
      "image/svg+xml" => "svg"
    }

    module Helper
      def register_formats
        bytes_io = PyCall.import_module('io').BytesIO
        type { Figure }
        AGG_FORMATS.each do |mime, format|
          format mime do |fig|
            unless fig.canvas.get_supported_filetypes.().has_key?(format)
              raise Error, "Unable to display a figure in #{format} format"
            end
            io = bytes_io.()
            fig.canvas.print_figure.(io, format: format, bbox_inches: 'tight')
            io.getvalue.()
          end
        end
      end
    end

    class << self
      # NOTE: This method is translated from `IPython.core.activate_matplotlib` function.
      def activate(gui=:inline)
        require 'matplotlib/pyplot'
        figure_class = Pyplot.__pyobj__.Figure
        PyCall::Conversions.python_type_mapping(figure_class, Figure)
      end
    end
  end
end

::IRuby::Display::Registry.module_eval do
  extend Matplotlib::IRuby::Helper
  register_formats
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
matplotlib-0.1.0.alpha.20170226 lib/matplotlib/iruby.rb