Проблема
Линии построены в порядке их появления в кадре данных.Так, например,
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
a = np.random.rand(400)*0.9
b = np.random.rand(400)+1
a = np.c_[a,-a].flatten()
b = np.c_[b,-b].flatten()
df = pd.DataFrame({"A" : a, "B" : b})
df.plot()
plt.show()

Здесь значения "B"
скрывают значения от "A"
.
Решение 1: Обратный порядок столбцов
Решение состоит в том, чтобы изменить их порядок
df[df.columns[::-1]].plot()

ТоТакже изменился порядок в легенде и цветовой кодировке.
Решение 2: Обратный z-порядок
Поэтому, если это нежелательно, вы можете вместо этого поиграть с zorder.
ax = df.plot()
lines = ax.get_lines()
for line, j in zip(lines, list(range(len(lines)))[::-1]):
line.set_zorder(j)
