您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

96 行
2.7KB

  1. #!/usr/bin/env python3
  2. from argparse import ArgumentParser
  3. import pandas as pd
  4. import matplotlib.pyplot as plt
  5. plt_params = {
  6. "pgf.texsystem": "lualatex",
  7. #"legend.fontsize": "x-large",
  8. #"figure.figsize": (15, 5),
  9. "axes.labelsize": 15, # "small",
  10. "axes.titlesize": "x-large",
  11. "xtick.labelsize": 15, # "small",
  12. "ytick.labelsize": 15, # "small",
  13. "legend.fontsize": 15,
  14. "axes.formatter.use_mathtext": True,
  15. "mathtext.fontset": "dejavusans",
  16. }
  17. #plt.rcParams.update(plt_params)
  18. import seaborn as sns
  19. sns.set()
  20. sns.set(font_scale=1.5)
  21. plt.rcParams["figure.figsize"] = (10, 3)
  22. if __name__ == "__main__":
  23. parser = ArgumentParser()
  24. parser.add_argument("-f", "--file", required=True, help="Serial CSV")
  25. parser.add_argument("--save", default=None, help="Location to save pdf file.")
  26. args = parser.parse_args()
  27. df = pd.read_csv(args.file)
  28. df["time_rel"] = df["time"] - df["time"].iloc[0]
  29. df.index = df["time_rel"] / 60
  30. # filter active state
  31. for i in range(1, 5):
  32. df["LTE_SCC{}_effective_bw".format(i)] = df["LTE_SCC{}_bw".format(i)]
  33. mask = df["LTE_SCC{}_state".format(i)].isin(["ACTIVE"])
  34. df["LTE_SCC{}_effective_bw".format(i)] = df[
  35. "LTE_SCC{}_effective_bw".format(i)
  36. ].where(mask, other=0)
  37. # filter if sc is usesd for uplink
  38. for i in range(1, 5):
  39. mask = df["LTE_SCC{}_UL_Configured".format(i)].isin([False])
  40. df["LTE_SCC{}_effective_bw".format(i)] = df[
  41. "LTE_SCC{}_effective_bw".format(i)
  42. ].where(mask, other=0)
  43. # sum all effective bandwidth for 5G and 4G
  44. df["SCC1_NR5G_effective_bw"] = df["SCC1_NR5G_bw"].fillna(0)
  45. df["effective_bw_sum"] = (
  46. df["SCC1_NR5G_effective_bw"]
  47. + df["LTE_SCC1_effective_bw"]
  48. + df["LTE_SCC2_effective_bw"]
  49. + df["LTE_SCC3_effective_bw"]
  50. + df["LTE_SCC4_effective_bw"]
  51. + df["LTE_bw"]
  52. )
  53. bw_cols = [
  54. "SCC1_NR5G_effective_bw",
  55. "LTE_bw",
  56. "LTE_SCC1_effective_bw",
  57. "LTE_SCC2_effective_bw",
  58. "LTE_SCC3_effective_bw",
  59. "LTE_SCC4_effective_bw",
  60. ]
  61. ax = df[bw_cols].plot.area(stacked=True, linewidth=0)
  62. ax.set_ylabel("bandwidth [MHz]")
  63. ax.set_xlabel("time [minutes]")
  64. ax.set_xlim([0, df.index[-1]])
  65. ax.xaxis.grid(False)
  66. L = plt.legend(ncols=2, fontsize=12, frameon=False)
  67. L.get_texts()[0].set_text("5G main")
  68. L.get_texts()[1].set_text("4G main")
  69. L.get_texts()[2].set_text("4G SCC 1")
  70. L.get_texts()[3].set_text("4G SCC 2")
  71. L.get_texts()[4].set_text("4G SCC 3")
  72. L.get_texts()[5].set_text("4G SCC 4")
  73. if args.save:
  74. plt.savefig("{}-used_bandwidth.eps".format(args.save), bbox_inches="tight")
  75. else:
  76. plt.show()