Closed
Description
Bug report
Bug summary
I am trying to draw lines that do not get a margin placed around them when the axis is autoscaled. My understanding is that the current way to accomplish that is with Artist.sticky_edges
. But I am finding that while this works within a single Axes, it does not work across multiple Axes
Code for reproduction
This works:
f, ax = plt.subplots()
ax.scatter([0, 1], [0, 0])
x1 = ax.get_xlim()
line, = ax.plot(x1, [0, 0])
line.sticky_edges.x[:] = x1
ax.scatter([0, 1], [1, 1])
x2 = ax.get_xlim()
line, = ax.plot(x2, [1, 1])
line.sticky_edges.x[:] = x2
assert x1 == x2
While this fails:
f, (ax1, ax2) = plt.subplots(1, 2, sharex=True, sharey=True)
ax1.scatter([0, 1], [0, 0])
x1 = ax1.get_xlim()
line, = ax1.plot(x1, [0, 0])
line.sticky_edges.x[:] = x1
ax2.scatter([0, 1], [1, 1])
x2 = ax2.get_xlim()
line, = ax2.plot(x2, [1, 1])
line.sticky_edges.x[:] = x2
assert x1 == x2
Is this expected to work? I know there are active changes to the autoscaling behavior; is this a bug that has been fixed (I'm not in a position to test things on a development build right now). Is there a different way to accomplish "ignore an artist when autoscaling"?
Matplotlib version
- Operating system: macos
- Matplotlib version: 3.1.1
- Matplotlib backend (
print(matplotlib.get_backend())
): inline - Python version: 3.7
Metadata
Metadata
Assignees
Labels
No labels