Reputation: 6352
Look at this pretty graph.
Is there a way, in matplotlib, to make parts of the red and green graph invisible (where f(x)=0)?
Not just those, but also the single line segment where the flat part connects to the sine curve.
Basically, is it possible to tell matplotlib to only plot graph on a certain interval and not draw the rest (or vice versa)?
Upvotes: 2
Views: 1222
Reputation: 1314
You could try replacing your points of interest with np.nan
as shown below:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# here is some example data because none was provided in the question;
# it is a quadratic from x=-5:5
x = np.arange(-5, 6)
s = pd.Series(x**2, index=x)
# replace all y values less than 4 with np.nan and store in a new Series object
s_mod = s.apply(lambda y: np.nan if y < 4 else y)
# plot the modified data with the original data
fig, ax = plt.subplots()
s.plot(marker='o', markersize=16, ax=ax, label='original')
s_mod.plot(marker='s', ax=ax, label='modified')
ax.legend()
fig # displays as follows
Upvotes: 2