Для морских документов на lineplot
кадр данных, передаваемый на data
, должен быть
Tidy («длинная форма»), где каждый столбец представляет собойпеременная, и каждая строка является наблюдением.
Из этого следует, что нет способа заставить оси переключаться, даже манипулируя данными.Если есть способ сделать это, я не нашел его - я уверен, что есть более элегантный способ сделать это, но один из способов, которым вы могли бы это сделать, это сделать это, так сказать, вручную.Нечто подобное может сделать трюк
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
df = pd.DataFrame([[0,1],[0,2],[0,1.5],[1,1],[1,5]], columns=['group','val'])
group = df['group'].tolist()
val = df['val'].tolist()
yl = list()
yu = list()
avg = list()
ii = 0
while ii < len(group): #Loop through all the groups
g = group[ii]
y0 = val[ii]
y1 = val[ii]
s = 0
jj = ii
while (jj < len(group) and group[jj] == g):
s += val[jj]
#This takes the min and max, but could easily take the standard deviation
if val[jj] > y1:
y1 = val[jj]
if val[jj] < y0:
y0 = val[jj]
jj += 1
avg.append(s/(jj - ii))
ii = jj
yl.append(y0)
yu.append(y1)
x = np.linspace(min(group), max(group), len(yl))
plt.ylabel(df.columns[0])
plt.xlabel(df.columns[1])
plt.plot(avg, x, color="#5a9edd", linestyle="-", linewidth=1.5)
plt.fill_betweenx(x, yl, yu, alpha=0.3)
Это даст вам следующий сюжет:
![enter image description here](https://i.stack.imgur.com/g9btW.png)
Для краткости используетсяминимум и максимум от каждой группы, чтобы получить полосу ошибок, но при необходимости ее можно легко заменить на стандартную ошибку или стандартное отклонение.