this incredible answer Basiert weg, ich war in der Lage, einen Affen-Patch zu erstellen, um schön zu tun, was Sie suchen.
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)
Ausgang Graph:
Beachten Sie, dass die schattierten Bereiche mit dem wahren Maximum und Minimum in der Liniengrafik in eine Reihe aufstellen!
Wenn Sie herausfinden, warum die Variable unit
erforderlich ist, lassen Sie es mich bitte wissen.
Wenn Sie wollen, dass sie nicht alle in der gleichen Grafik dann:
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')
, die die folgenden erzeugt, (Sie können natürlich mit dem Seitenverhältnis spielen, wenn man die Proportionen sind weg denken)
Best I weit mit so kommen könnte, ist sns.pointplot verwenden und diese bekommen: https://gyazo.com/425b31b23f9d5009c12502f3113361ef –
ehrlich, ist das Grundstück nicht genau das, was Sie suchen zum? Möchten Sie, dass die Interliner-Schattierung kleiner und die Kantenlinien dunkler sind? –
Das sieht ähnlich aus wie ich es suche, aber wenn ich es erweitere, sind das tatsächliche Vertrauensintervalle (vertikale Linien für jeden Punkt), also keine durchgehenden Zeitreihen sozusagen. Und ja, ich möchte, dass die Inter-Line-Schattierung weniger ist. –