JuliaPy / JuliaPy/PyPlot.jl

add_callback fails on axis

Open
#500 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Julia
Stars
488
Forks
90
PR merge metrics
No merged PRs in 30d

Description

I'm trying to set up a callback that runs every time the user changes the zoom setting on an axis. Here's a demo in Python:
```python
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots()
>>> ax.plot(np.random.rand(5))
[]
>>> def callback(artist):
... print('callback')
...
>>> ax.xaxis.add_callback(callback)
0
>>> plt.show()
callback
callback
```
and then if I click on the magnifying glass and zoom in, I get another `callback` exactly as expected.

However, here I get nothing:
```julia
julia> using PyPlot

julia> PyPlot.version
v"3.3.1"

julia> fig, ax = plt.subplots()
(Figure(PyObject ), PyObject )

julia> ax.plot(rand(5))
1-element Vector{PyCall.PyObject}:
PyObject

julia> called = [] # in case there are any task-switching concerns...
Any[]

julia> pushtime(args...) = push!(called, time()) # just log that we got called
pushtime (generic function with 1 method)

julia> ax.xaxis.add_callback(pushtime)
0
```
and `called` never gets populated no matter what I do.

Any suggestions? EDIT: true for both Julia 1.5.2 and Julia v"1.6.0-DEV.1187".

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reproducing the Julia example with PyPlot and the ax.xaxis.add_callback entry point, then compare its behavior with the Python matplotlib example across the reported Julia versions. Done means the callback is invoked when the axis zoom setting changes, as shown by the called log being populated.

Written by the indexing model from the issue text.

Assessment

Tech stack
julia, python
Domain
data-visualization
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
40/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.