Соединительные точки линейного участка Seaborn в неправильном порядке для графика x против y - PullRequest
0 голосов
/ 28 августа 2018

Для 3-панельного графика с использованием линейного графика морского происхождения (также пробовал с relplot с тем же результатом) в центральной и правой панелях некоторые точки отсутствуют или отображаются неправильно. Я установил сортировку в False, чтобы она, как я понимаю, отображала точки в порядке индекса. Исходя из данных выборки (ссылка ниже), самый правый график для метода 3 должен состоять из точек:

bin (y) diff (x)
1500 -5
1700 -5
1900 -12
2100 -16,5
2300 -19,5
2500 -9
2700 -5
2900 -3

подключен в этом порядке. Но линия не показывает первые две точки правильно. Строка для метода 0 еще хуже, где значение bin (y) первой точки должно быть 1500. При сортировке значения y должны возрастать вдоль каждой линии с 1500 до 2900, и эти два примера не следуют этому , Линия метода 0 на центральной панели также показывает падение значения y в направлении верхнего конца.

%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 plot

область выборочных данных здесь .

Любая помощь в выяснении того, что мне не хватает, будет принята с благодарностью.

Обновление: я нашел обходной путь, избегая Seaborn (из этот полезный пост ):

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)

Но это не отвечает на вопрос о морском рождении.

...