For a 3-panel plot using seaborn lineplot (also tried with relplot with the same result) in the center and right panels some points are missing or plotted incorrectly. I set sort to False so it should, as I understand, plot points in the index order. From the sample data (linked below), the rightmost plot for method 3 should consist of the points:
bin (y) diff (x)
1500 -5
1700 -5
1900 -12
2100 -16.5
2300 -19.5
2500 -9
2700 -5
2900 -3
connected in that order. But the line does not show the first two points correctly. The line for method 0 is even worse, where the bin (y) value of the first point should be 1500. As sorted, the y-values should increase along each line from 1500 to 2900, and those two examples don't follow that. The method 0 line in the center panel also shows the y-value dropping toward the upper end.
%matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
df = pd.read_csv("sample_data.csv")
print df[0:5]
fig, axes = plt.subplots(figsize=(12,4), ncols=3, nrows=1, sharey=True)
xcols = ['hist','fut','diff']
n=-1
for ax in axes.flatten():
n += 1
if n > 0:
sns.lineplot(data=df,x=xcols[n],y='bin',hue='method',sort=False,ax=ax,legend=False,ci=None)
else:
sns.lineplot(data=df,x=xcols[n],y='bin',hue='method',sort=False,ax=ax,legend='brief',ci=None)
plt.show()

sample data area here.
Any help in figuring out what I'm missing would be greatly appreciated.
Update: I found a workaround by avoiding Seaborn (from this helpful post):
for n,i in enumerate(axes):
for name, group in df.groupby('method'):
group.plot(x=xcols[n],y='bin',ax=axes[n],label=name,legend=False)
handles, labels = axes[n].get_legend_handles_labels()
fig.legend(handles, labels, loc=7)
But that doesn't answer the question about seaborn.