proplot icon indicating copy to clipboard operation
proplot copied to clipboard

ax.step where parameter

Open austin-hoover opened this issue 3 years ago • 2 comments

Description

In ax.step, the 'where' parameter doesn't do anything in proplot.

Steps to reproduce

import numpy as np
import proplot as pplt

x = np.linspace(-5.0, 5.0, 11)
y = np.exp(-0.5 * x**2)

fig, axes = pplt.subplots(nrows=3, figsize=(4.0, 3.0), spany=False)
for ax, where in zip(axes, ['pre', 'post', 'mid']):
    ax.step(x, y, where=where, color='black', alpha=0.2)
    ax.scatter(x, y, color='black', marker='.')
    ax.format(ylabel=where)

pplt

Expected behavior: The where parameter should shift the locations of the steps.

Actual behavior: The where parameter does not shift the locations of the steps.

Equivalent steps in matplotlib

import numpy as np
from matplotlib import pyplot as plt

x = np.linspace(-5.0, 5.0, 11)
y = np.exp(-0.5 * x**2)

fig, axes = plt.subplots(nrows=3, figsize=(4.0, 3.0), sharex=True)
for ax, where in zip(axes, ['pre', 'post', 'mid']):
    ax.step(x, y, where=where, color='black', alpha=0.2)
    ax.scatter(x, y, color='black', marker='.')
    ax.set_ylabel(where)

plt

Proplot version

matplotlib=3.4.3 proplot=0.9.5

austin-hoover avatar May 15 '22 18:05 austin-hoover

can confirm using proplot=0.9.5.post301 and matplotlib=3.5.2

pguenth avatar May 26 '22 14:05 pguenth

If you need an immediate solution to this using only Proplot, you can use the drawstyle argument with ax.plot instead to achieve the desired behavior.

import proplot as pplt
import numpy as np

x = np.linspace(-5.0, 5.0, 11)
y = np.exp(-0.5 * x**2)

fig, axes = pplt.subplots(nrows=3, figsize=(4.0, 3.0), spany=False)
for ax, drawstyle in zip(axes, ['steps', 'steps-post', 'steps-mid']):
    ax.plot(x, y, drawstyle=drawstyle, color='black', alpha=0.2)
    ax.scatter(x, y, color='black', marker='.')
    ax.format(ylabel=drawstyle, grid=False, ylocator=1)

drawstyle

proplot=0.9.5.post284 matplotlib=3.4.3

AWSisco avatar Jul 24 '22 14:07 AWSisco

This was a very simple fix (https://github.com/proplot-dev/proplot/commit/0e18babf43193a44f038928f008e873ad95f271c). For some reason, a very long time ago, I added a "convenience" feature to step() converting where to this more complicated drawstyle='step-post' keyword arg... but I didn't realize step already had that conversion baked in / explicitly ignores drawstyle. So just removed the conversion. Result:

import numpy as np
import proplot as pplt

x = np.linspace(-5.0, 5.0, 11)
y = np.exp(-0.5 * x**2)

fig, axes = pplt.subplots(nrows=3, figsize=(4.0, 3.0), spany=False)
for ax, where in zip(axes, ['pre', 'post', 'mid']):
    ax.step(x, y, where=where, color='black', alpha=0.2)
    ax.scatter(x, y, color='black', marker='.')
    ax.format(ylabel=where)

iTerm2 9mY0iJ tmpqyd4v0eh

lukelbd avatar Mar 29 '23 09:03 lukelbd