Я использую оболочку python mathplotlib ruby.Все отлично работает с рисованием линий, но когда я пытаюсь нарисовать прямоугольники, это дает мне ошибку ниже.Сбой после точки привязки binding.pry в методе add_patch.Я неопытный в Python, поэтому не могу понять, что делать.Скорее всего, патчи не реализованы должным образом в gem, но я должен нарисовать эти прямоугольники, поэтому любая помощь будет полезна.
Ошибка:
> [40] pry(#<Renko>)> q axes.add_patch(renko) PyCall::PyError: <type
> 'exceptions.TypeError'>: unbound method set_figure() must be called
> with Rectangle instance as first argument (got Figure instance
> instead) File
> "/usr/local/opt/python@2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/axes/_base.py",
> line 2032, in add_patch
> self._set_artist_props(p) File "/usr/local/opt/python@2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/matplotlib/axes/_base.py",
> line 956, in _set_artist_props
> a.set_figure(self.figure) from (pry):52:in `add_patch'
Код:
def plot_data(renko_data)
x = renko_data.map {|a| Time.strptime(a[:date].to_s,'%s').to_s}
y_renko = renko_data.map {|a| a[:close].to_f}
brick_size = 1
plt = Matplotlib::Pyplot
fig = plt.figure(1)
brick_size = 2
fig.clf()
axes = fig.gca()
data = y_renko
y_max = data.max
prev_num = 0
bricks = []
data.each do |d|
if d > 0
bricks.push([1]*d)
else
bricks.push([-1]*delta.abs)
end
end
bricks.each_with_index do |n,index|
if n == 1
facecolor='green'
else
facecolor='red'
end
prev_num += index
x = prev_num * brick_size
renko = plt.Rectangle([index, x], 1, brick_size, :facecolor=>facecolor, :alpha=>0.5)
binding.pry
axes.add_patch(renko)
end
plt.show