| return iter(lambda: tuple(islice(it, size)), ()) | return iter(lambda: tuple(islice(it, size)), ()) | ||||
| def plot_cdf(dataframe, column_name): | |||||
| def plot_cdf(dataframe, column_name, axis=None): | |||||
| stats_df = dataframe \ | stats_df = dataframe \ | ||||
| .groupby(column_name) \ | .groupby(column_name) \ | ||||
| [column_name] \ | [column_name] \ | ||||
| stats_df["CDF"] = stats_df["PDF"].cumsum() | stats_df["CDF"] = stats_df["PDF"].cumsum() | ||||
| stats_df = stats_df.reset_index() | stats_df = stats_df.reset_index() | ||||
| stats_df.plot(x=column_name, y=["CDF"], grid=True) | |||||
| if axis: | |||||
| stats_df.plot(x=column_name, y=["CDF"], grid=True, ax=axis) | |||||
| else: | |||||
| stats_df.plot(x=column_name, y=["CDF"], grid=True) | |||||
| return axis | |||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||
| )) | )) | ||||
| # Plot sRTT CDF | # Plot sRTT CDF | ||||
| plot_cdf(transmission_df_list[0]["df"], "srtt") | |||||
| plot_cdf(transmission_df_list[1]["df"], "srtt") | |||||
| ax = plot_cdf(transmission_df_list[0]["df"], "srtt") | |||||
| plot_cdf(transmission_df_list[1]["df"], "srtt", axis=ax) | |||||
| plt.xscale("log") | plt.xscale("log") | ||||
| plt.xlabel("sRTT [s]") | plt.xlabel("sRTT [s]") | ||||
| plt.ylabel("CDF") | plt.ylabel("CDF") | ||||
| plt.clf() | plt.clf() | ||||
| # Plot goodput CDF | # Plot goodput CDF | ||||
| plot_cdf(transmission_df_list[0]["df"], "goodput") | |||||
| plot_cdf(transmission_df_list[1]["df"], "goodput") | |||||
| ax = plot_cdf(transmission_df_list[0]["df"], "goodput") | |||||
| plot_cdf(transmission_df_list[1]["df"], "goodput", axis=ax) | |||||
| plt.xlabel("goodput [mbps]") | plt.xlabel("goodput [mbps]") | ||||
| plt.ylabel("CDF") | plt.ylabel("CDF") | ||||
| plt.legend([transmission_df_list[0]["cc_algo"], transmission_df_list[1]["cc_algo"]]) | plt.legend([transmission_df_list[0]["cc_algo"], transmission_df_list[1]["cc_algo"]]) |