Skip to content

Failed when calling add_artist function #5

Description

@hukaidong

I was trying to migrate this script to ruby

import matplotlib as mpl
mpl.use("Qt5Agg")
from matplotlib import pyplot as plt
from matplotlib.patches import Rectangle as rec
fig, ax = plt.subplots(1)
ax.add_artist(rec([1,1],1,1))
ax.set_xlim(0,2)
ax.set_ylim(0,2)
fig.show()

with

require "matplotlib"
Matplotlib.use("Qt5Agg")
require 'matplotlib/pyplot'
plt = Matplotlib::Pyplot
def rec (*args) Matplotlib.patches.Rectangle(*args) end
fig, ax = plt.subplots(1)
ax.add_artist(rec([1,1],1,1))
ax.set_xlim(0,2)
ax.set_ylim(0,2)
fig.show

The python code runs well, but when I run the ruby code, I get following error messages

/var/lib/gems/2.3.0/gems/pycall-0.1.0.alpha.20170711/lib/pycall/pyobject_wrapper.rb:179:in `call': pytype(TypeError): TypeError("set_figure() missing 1 required positional argument: 'fig'",) (PyCall::PyError)
  File "/home/kaidonghu/.anaconda3/lib/python3.6/site-packages/matplotlib/axes/_base.py", line 1739, in add_artist
    self._set_artist_props(a)
  File "/home/kaidonghu/.anaconda3/lib/python3.6/site-packages/matplotlib/axes/_base.py", line 924, in _set_artist_props
    a.set_figure(self.figure)
	from /var/lib/gems/2.3.0/gems/pycall-0.1.0.alpha.20170711/lib/pycall/pyobject_wrapper.rb:34:in `block (2 levels) in wrap_class'
	from test.rb:7:in `<main>'

Is there anything I missed to let this happen? Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions