Чтобы развернуть ответ @ ImportanceOfBeingErnest, можно удалить пропущенные значения, например:
Заменить
ax2.plot(fh,gfs,'ob-')
на
ax2.plot(fh[~np.isnan(gfs)],gfs[~np.isnan(gfs)],'ob-')
ОБНОВЛЕНИЕ:
Приведенный выше метод, вероятно, приводит к изменению порядка оси x. Вот обходной путь:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# make up some fake data
df = pd.DataFrame({"GFS": [np.nan, np.nan, 1, 2, np.nan,
2, 3, np.nan, np.nan, 4],
"RAP": [-2.45832646, 0.56266567, -0.4453474 ,
-0.85447845, -1.34830127,
-0.38113925, -0.41400397,
np.nan, -0.78764545, -0.02807674]})
fh = np.array(["Fri 4 am", "Fri 6 am","Fri 8 am","Fri 10 am",
"Fri 6 pm","Fri 10 pm","Sat 4 am","Sat 6 am",
"Sat 8 am","100az 10 am"
])
gfs = df['GFS']
rap = df['RAP']
fig2, ax2 = plt.subplots(figsize=(10,8))
# workaround to set the order of xlabels
ax2.plot(fh, [np.nan]*len(fh))
# remove nan's so that the points are connected
ax2.plot(fh[~np.isnan(gfs)], gfs[~np.isnan(gfs)], "ob-")
ax2.plot(fh[~np.isnan(rap)],rap[~np.isnan(rap)],marker='x')
ax2.tick_params(which='major',labelsize='12')
ax2.grid(which='major', color='#CCCCCC', linestyle='-')
plt.xticks(rotation='90')
plt.xlabel('Forecast Run')
plt.ylabel('Snowfall Accumulation (in.)')
![enter image description here](https://i.stack.imgur.com/un7DM.png)