in base al largo this incredible answer, sono stato in grado di creare una patch scimmia per fare in modo bello quello che stai cercando. Grafico
import pandas as pd
import seaborn as sns
import seaborn.timeseries
def _plot_range_band(*args, central_data=None, ci=None, data=None, **kwargs):
upper = data.max(axis=0)
lower = data.min(axis=0)
#import pdb; pdb.set_trace()
ci = np.asarray((lower, upper))
kwargs.update({"central_data": central_data, "ci": ci, "data": data})
seaborn.timeseries._plot_ci_band(*args, **kwargs)
seaborn.timeseries._plot_range_band = _plot_range_band
cluster_overload = pd.read_csv("TSplot.csv", delim_whitespace=True)
cluster_overload['Unit'] = cluster_overload.groupby(['Cluster','Week']).cumcount()
ax = sns.tsplot(time='Week',value="Overload", condition="Cluster", unit="Unit", data=cluster_overload,
err_style="range_band", n_boot=0)
uscita:
Si noti che le regioni ombreggiate si allineano con il vero massimo e minimi nel grafico a linee!
Se si capisce perché è necessaria la variabile unit
, per favore fatemelo sapere.
Se non li si vuole sullo stesso grafico, allora:
import pandas as pd
import seaborn as sns
import seaborn.timeseries
def _plot_range_band(*args, central_data=None, ci=None, data=None, **kwargs):
upper = data.max(axis=0)
lower = data.min(axis=0)
#import pdb; pdb.set_trace()
ci = np.asarray((lower, upper))
kwargs.update({"central_data": central_data, "ci": ci, "data": data})
seaborn.timeseries._plot_ci_band(*args, **kwargs)
seaborn.timeseries._plot_range_band = _plot_range_band
cluster_overload = pd.read_csv("TSplot.csv", delim_whitespace=True)
cluster_overload['subindex'] = cluster_overload.groupby(['Cluster','Week']).cumcount()
def customPlot(*args,**kwargs):
df = kwargs.pop('data')
pivoted = df.pivot(index='subindex', columns='Week', values='Overload')
ax = sns.tsplot(pivoted.values, err_style="range_band", n_boot=0, color=kwargs['color'])
g = sns.FacetGrid(cluster_overload, row="Cluster", sharey=False, hue='Cluster', aspect=3)
g = g.map_dataframe(customPlot, 'Week', 'Overload','subindex')
che produce il seguente, (si può giocare, ovviamente, con il rapporto di aspetto se si pensa le proporzioni sono spenti)
meglio che ho potuto venire con finora sta usando sns.pointplot e ottenere questo: https://gyazo.com/425b31b23f9d5009c12502f3113361ef –
onestamente, è che trama non esattamente quello che stai cercando per? ti piacerebbe che l'ombreggiatura inter-line sia meno e le linee dei bordi siano più scure? –
Sembra simile a quello che sto cercando, ma se lo espongo, sono intervalli di confidenza effettivi (linee verticali per ogni punto), quindi non una sequenza temporale continua per così dire. E sì, vorrei che l'ombreggiatura inter-line fosse inferiore. –