Skip to content

ValueError with labellines when plotting rolling mean with NaNs #217

Closed
@Vasco-Da-Gama-png

Description

@Vasco-Da-Gama-png

Bug Report: ValueError with labellines when plotting rolling mean with NaNs

Description

When using the labellines package to label lines in a plot that includes a rolling mean with NaN values, a ValueError is raised with the message "x label location is outside data range". This issue occurs even though the commit 0a517f7 was supposed to handle NaN values.

Minimal Example

The following minimal example demonstrates the issue. It creates a DataFrame with random values and some NaN values, calculates the rolling mean, and then attempts to label the lines using labellines.

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
from labellines import labelLines

# Create a DataFrame with random values and NaNs
np.random.seed(0)
time = pd.date_range(start="2025-01-01", periods=100, freq="T")
data = np.random.randn(100).cumsum()
data[20:30] = np.nan  # Add some NaN values

df = pd.DataFrame({"Time": time, "Value": data})

# Calculate the rolling mean
roll_mean = df["Value"].rolling(window=10).mean()

# Plot the data and the rolling mean
fig, ax = plt.subplots()
ax.plot(df["Time"], df["Value"], label="Original Data", alpha=0.5)
ax.plot(df["Time"], roll_mean, label="Rolling Mean", linewidth=2)

# Use labellines to label the lines
try:
    labelLines(ax.get_lines(), align=False)
except ValueError as e:
    print(f"Error: {e}")

# Show the plot
plt.show()

Expected Behavior

The labellines function should label the lines without raising a ValueError, even when the data contains NaN values.

Actual Behavior

A ValueError is raised with the message "x label location is outside data range".

Environment

matplotlib version: [3.10.1]
labellines version: [Github Main branch]
Python version: [3.11.4]
Operating System: [Debian buster]

Additional Information

The issue seems to be related to the handling of NaN values in the data. The commit 0a517f7 was supposed to address this, but the problem persists when plotting rolling means.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions