cols = iso["value"].columns.values if len(cols) != 1: raise Exception("Iso line filter must result in exactly one value column, instead of " + str(cols)) iso_column = cols[0] try: df = xa.join(ya, how='outer').join(iso, how='outer') except: import traceback traceback.print_exc() values = df["value"] titles = df["title"] if "title" in df else None units = df["unit"] if "unit" in df else None values[yaxis_column] = pd.to_numeric(values[yaxis_column], errors="ignore") df = pd.pivot_table(values, columns=iso_column, index=xaxis_column, values=yaxis_column, dropna=False) df.reset_index(inplace=True) df.rename({xaxis_column: "time"}, axis="columns", inplace=True) ideplot.plot_vectors(df) title = props["title"] or ', '.join(titles[yaxis_column].unique()) utils.set_plot_title(title) if units is not None: ideplot.set_property("Y.Axis.Title", "[" + ', '.join(units[yaxis_column].unique()) + "]")
title, legend = utils.extract_label_columns(df) df.sort_values(by=[l for i, l in legend], axis='index', inplace=True) ax = plt.gca() # This is how much of the standard deviation will give the 25th and 75th # percentiles, assuming normal distribution. # >>> math.sqrt(2) * scipy.special.erfinv(0.5) coeff = 0.6744897501960817 boxes = [(r.min, r.mean - r.stddev * coeff, r.mean, r.mean + r.stddev * coeff, r.max) for r in df.itertuples(index=False) if r.count > 0] utils.customized_box_plot(boxes, ax) utils.set_plot_title(utils.make_chart_title(df, title, legend)) ax.set_xticklabels([ utils.make_legend_label(legend, r) for r in df.itertuples(index=False) if r.count > 0 ]) utils.make_fancy_xticklabels(ax) plt.tight_layout() utils.postconfigure_plot(props) utils.export_image_if_needed(props) utils.export_data_if_needed(df, props)
columns=iso_itervar, index=xaxis_itervar) print(df) legend_cols, _ = utils.extract_label_columns(df) p = plot if chart.is_native_chart() else plt p.xlabel(xaxis_itervar) p.ylabel(scalar_name) try: xs = pd.to_numeric(df.index.values) except: plot.set_warning( "The X axis itervar is not purely numeric, this is not supported yet.") exit(1) for i, c in enumerate(df.columns): style = utils._make_line_args(props, c, df) p.plot(xs, df[c].values, label=iso_itervar + "=" + str(df[c].name), **style) utils.set_plot_title(scalar_name + " vs. " + xaxis_itervar) utils.postconfigure_plot(props) utils.export_image_if_needed(props) utils.export_data_if_needed(df, props)