mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-11-01 19:28:00 +00:00
Reformat files......
This commit is contained in:
@@ -26,39 +26,37 @@ import pdfkit
|
||||
import math
|
||||
from matplotlib.colors import ListedColormap
|
||||
|
||||
|
||||
# internal candela references included during intial phases, to be deleted at future date
|
||||
|
||||
# graph reporting classes
|
||||
class lf_bar_graph():
|
||||
def __init__(self,
|
||||
_data_set= [[30,55,69,37],[45,67,34,22],[22,45,12,34]],
|
||||
def __init__(self, _data_set=[[30, 55, 69, 37], [45, 67, 34, 22], [22, 45, 12, 34]],
|
||||
_xaxis_name="x-axis",
|
||||
_yaxis_name="y-axis",
|
||||
_xaxis_categories=[1,2,3,4],
|
||||
_xaxis_categories=[1, 2, 3, 4],
|
||||
_graph_image_name="image_name",
|
||||
_label=["bi-downlink", "bi-uplink",'uplink'],
|
||||
_label=["bi-downlink", "bi-uplink", 'uplink'],
|
||||
_color=None,
|
||||
_bar_width=0.25,
|
||||
_color_edge='grey',
|
||||
_font_weight='bold',
|
||||
_color_name=['lightcoral','darkgrey','r','g','b','y'],
|
||||
_figsize=(10,5),
|
||||
_color_name=['lightcoral', 'darkgrey', 'r', 'g', 'b', 'y'],
|
||||
_figsize=(10, 5),
|
||||
_dpi=96):
|
||||
|
||||
self.data_set=_data_set
|
||||
self.xaxis_name=_xaxis_name
|
||||
self.yaxis_name=_yaxis_name
|
||||
self.xaxis_categories=_xaxis_categories
|
||||
self.graph_image_name=_graph_image_name
|
||||
self.label=_label
|
||||
self.color=_color
|
||||
self.bar_width=_bar_width
|
||||
self.color_edge=_color_edge
|
||||
self.font_weight=_font_weight
|
||||
self.color_name=_color_name
|
||||
self.figsize=_figsize
|
||||
|
||||
|
||||
self.data_set = _data_set
|
||||
self.xaxis_name = _xaxis_name
|
||||
self.yaxis_name = _yaxis_name
|
||||
self.xaxis_categories = _xaxis_categories
|
||||
self.graph_image_name = _graph_image_name
|
||||
self.label = _label
|
||||
self.color = _color
|
||||
self.bar_width = _bar_width
|
||||
self.color_edge = _color_edge
|
||||
self.font_weight = _font_weight
|
||||
self.color_name = _color_name
|
||||
self.figsize = _figsize
|
||||
|
||||
def build_bar_graph(self):
|
||||
if self.color is None:
|
||||
@@ -66,23 +64,23 @@ class lf_bar_graph():
|
||||
self.color = []
|
||||
for col in self.data_set:
|
||||
self.color.append(self.color_name[i])
|
||||
i = i+1
|
||||
i = i + 1
|
||||
|
||||
fig = plt.subplots(figsize=self.figsize)
|
||||
i = 0
|
||||
for set in self.data_set:
|
||||
for data in self.data_set:
|
||||
if i > 0:
|
||||
br = br1
|
||||
br2 = [x + self.bar_width for x in br]
|
||||
plt.bar(br2, self.data_set[i], color=self.color[i], width=self.bar_width,
|
||||
edgecolor=self.color_edge, label=self.label[i])
|
||||
br1 = br2
|
||||
i = i+1
|
||||
i = i + 1
|
||||
else:
|
||||
br1 = np.arange(len(self.data_set[i]))
|
||||
plt.bar(br1, self.data_set[i], color=self.color[i], width=self.bar_width,
|
||||
edgecolor=self.color_edge, label=self.label[i])
|
||||
i=i+1
|
||||
i = i + 1
|
||||
plt.xlabel(self.xaxis_name, fontweight='bold', fontsize=15)
|
||||
plt.ylabel(self.yaxis_name, fontweight='bold', fontsize=15)
|
||||
plt.xticks([r + self.bar_width for r in range(len(self.data_set[0]))],
|
||||
@@ -90,24 +88,24 @@ class lf_bar_graph():
|
||||
plt.legend()
|
||||
|
||||
fig = plt.gcf()
|
||||
plt.savefig("%s.png"% (self.graph_image_name), dpi=96)
|
||||
plt.savefig("%s.png" % self.graph_image_name, dpi=96)
|
||||
plt.close()
|
||||
print("{}.png".format(self.graph_image_name))
|
||||
|
||||
return "%s.png" % (self.graph_image_name)
|
||||
return "%s.png" % self.graph_image_name
|
||||
|
||||
|
||||
class lf_scatter_graph():
|
||||
def __init__(self,
|
||||
_x_data_set=["sta0 ","sta1","sta2","sta3"],
|
||||
_y_data_set=[[30,55,69,37]],
|
||||
_values =None,
|
||||
_x_data_set=["sta0 ", "sta1", "sta2", "sta3"],
|
||||
_y_data_set=[[30, 55, 69, 37]],
|
||||
_values=None,
|
||||
_xaxis_name="x-axis",
|
||||
_yaxis_name="y-axis",
|
||||
_label = ["num1", "num2"],
|
||||
_label=["num1", "num2"],
|
||||
_graph_image_name="image_name",
|
||||
_color=["r","y"],
|
||||
_figsize=(9,4)):
|
||||
_color=["r", "y"],
|
||||
_figsize=(9, 4)):
|
||||
self.x_data_set = _x_data_set
|
||||
self.y_data_set = _y_data_set
|
||||
self.xaxis_name = _xaxis_name
|
||||
@@ -125,7 +123,7 @@ class lf_scatter_graph():
|
||||
if self.values is None:
|
||||
plt.scatter(self.x_data_set, self.y_data_set[0], color=self.color[0], label=self.label[0])
|
||||
if len(self.y_data_set) > 1:
|
||||
for i in range(1,len(self.y_data_set)):
|
||||
for i in range(1, len(self.y_data_set)):
|
||||
plt.scatter(self.x_data_set, self.y_data_set[i], color=self.color[i], label=self.label[i])
|
||||
plt.xlabel(self.xaxis_name, fontweight='bold', fontsize=15)
|
||||
plt.ylabel(self.yaxis_name, fontweight='bold', fontsize=15)
|
||||
@@ -138,21 +136,22 @@ class lf_scatter_graph():
|
||||
plt.ylabel(self.yaxis_name, fontweight='bold', fontsize=15)
|
||||
plt.gcf().autofmt_xdate()
|
||||
plt.legend(handles=scatter.legend_elements()[0], labels=self.label)
|
||||
plt.savefig("%s.png" % (self.graph_image_name), dpi=96)
|
||||
plt.savefig("%s.png" % self.graph_image_name, dpi=96)
|
||||
plt.close()
|
||||
print("{}.png".format(self.graph_image_name))
|
||||
|
||||
return "%s.png" % (self.graph_image_name)
|
||||
return "%s.png" % self.graph_image_name
|
||||
|
||||
|
||||
class lf_stacked_graph():
|
||||
def __init__(self,
|
||||
_data_set= [[1,2,3,4],[1,1,1,1],[1,1,1,1]],
|
||||
_data_set=[[1, 2, 3, 4], [1, 1, 1, 1], [1, 1, 1, 1]],
|
||||
_xaxis_name="Stations",
|
||||
_yaxis_name="Numbers",
|
||||
_label = ['Success','Fail'],
|
||||
_label=['Success', 'Fail'],
|
||||
_graph_image_name="image_name",
|
||||
_color = ["b","g"],
|
||||
_figsize=(9,4)):
|
||||
_color=["b", "g"],
|
||||
_figsize=(9, 4)):
|
||||
self.data_set = _data_set # [x_axis,y1_axis,y2_axis]
|
||||
self.xaxis_name = _xaxis_name
|
||||
self.yaxis_name = _yaxis_name
|
||||
@@ -161,7 +160,6 @@ class lf_stacked_graph():
|
||||
self.label = _label
|
||||
self.color = _color
|
||||
|
||||
|
||||
def build_stacked_graph(self):
|
||||
fig = plt.subplots(figsize=self.figsize)
|
||||
if self.color is None:
|
||||
@@ -170,7 +168,8 @@ class lf_stacked_graph():
|
||||
plt.bar(self.data_set[0], self.data_set[2], bottom=self.data_set[1], color=self.color[1])
|
||||
if len(self.data_set) > 3:
|
||||
for i in range(3, len(self.data_set)):
|
||||
plt.bar(self.data_set[0], self.data_set[i], bottom=np.array(self.data_set[i-2])+np.array(self.data_set[i-1]), color=self.color[i-1])
|
||||
plt.bar(self.data_set[0], self.data_set[i],
|
||||
bottom=np.array(self.data_set[i - 2]) + np.array(self.data_set[i - 1]), color=self.color[i - 1])
|
||||
plt.xlabel(self.xaxis_name)
|
||||
plt.ylabel(self.yaxis_name)
|
||||
plt.legend(self.label)
|
||||
@@ -180,18 +179,19 @@ class lf_stacked_graph():
|
||||
|
||||
return "%s.png" % (self.graph_image_name)
|
||||
|
||||
|
||||
class lf_horizontal_stacked_graph():
|
||||
def __init__(self,
|
||||
_seg= 2,
|
||||
_yaxis_set=('A','B'),
|
||||
_seg=2,
|
||||
_yaxis_set=('A', 'B'),
|
||||
_xaxis_set1=[12, 0, 0, 16, 15],
|
||||
_xaxis_set2 = [23, 34, 23, 0],
|
||||
_unit ="%",
|
||||
_xaxis_set2=[23, 34, 23, 0],
|
||||
_unit="%",
|
||||
_xaxis_name="Stations",
|
||||
_label=['Success', 'Fail'],
|
||||
_graph_image_name="image_name",
|
||||
_color=["success", "Fail"],
|
||||
_figsize=(9,4)):
|
||||
_figsize=(9, 4)):
|
||||
self.unit = _unit
|
||||
self.seg = _seg
|
||||
self.xaxis_set1 = _xaxis_set1
|
||||
@@ -209,15 +209,15 @@ class lf_horizontal_stacked_graph():
|
||||
|
||||
fig, ax = plt.subplots(figsize=self.figsize)
|
||||
|
||||
N = self.seg
|
||||
n = self.seg
|
||||
values1 = self.xaxis_set1
|
||||
values2 = self.xaxis_set2
|
||||
|
||||
ind = np.arange(N) + .15
|
||||
ind = np.arange(n) + .15
|
||||
width = 0.3
|
||||
|
||||
rects1 = plt.barh(ind, values1, width, color=self.color[0], label=self.label[0])
|
||||
rects2 = plt.barh(ind, values2, width, left=sumzip(values1), color=self.color[1],label=self.label[1])
|
||||
rects2 = plt.barh(ind, values2, width, left=sumzip(values1), color=self.color[1], label=self.label[1])
|
||||
|
||||
extra_space = 0.15
|
||||
ax.set_yticks(ind + width - extra_space)
|
||||
@@ -225,26 +225,28 @@ class lf_horizontal_stacked_graph():
|
||||
ax.yaxis.set_tick_params(length=0, labelbottom=True)
|
||||
|
||||
for i, v in enumerate(values1):
|
||||
if v!=0:
|
||||
if v != 0:
|
||||
plt.text(v * 0.45, i + .145, "%s%s" % (v, self.unit), color='white', fontweight='bold', fontsize=10,
|
||||
ha='center', va='center')
|
||||
|
||||
for i, v in enumerate(values2):
|
||||
if v != 0:
|
||||
plt.text(v * 0.45 + values1[i], i + .145, "%s%s" % (v, self.unit), color='white', fontweight='bold', fontsize=10,
|
||||
plt.text(v * 0.45 + values1[i], i + .145, "%s%s" % (v, self.unit), color='white', fontweight='bold',
|
||||
fontsize=10,
|
||||
ha='center', va='center')
|
||||
|
||||
ax.spines['right'].set_visible(False)
|
||||
ax.spines['top'].set_visible(False)
|
||||
ax.legend(loc='upper right')
|
||||
plt.savefig("%s.png" % (self.graph_image_name), dpi=96)
|
||||
plt.savefig("%s.png" % self.graph_image_name, dpi=96)
|
||||
plt.close()
|
||||
print("{}.png".format(self.graph_image_name))
|
||||
|
||||
return "%s.png" % (self.graph_image_name)
|
||||
return "%s.png" % self.graph_image_name
|
||||
|
||||
|
||||
# Unit Test
|
||||
if __name__ == "__main__":
|
||||
|
||||
output_html_1 = "graph_1.html"
|
||||
output_pdf_1 = "graph_1.pdf"
|
||||
|
||||
@@ -263,13 +265,12 @@ if __name__ == "__main__":
|
||||
# write logic to generate pdf here
|
||||
# wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
|
||||
# sudo apt install ./wkhtmltox_0.12.6-1.focal_amd64.deb
|
||||
options = {"enable-local-file-access" : None} # prevent eerror Blocked access to file
|
||||
options = {"enable-local-file-access": None} # prevent eerror Blocked access to file
|
||||
pdfkit.from_file(output_html_1, output_pdf_1, options=options)
|
||||
|
||||
|
||||
# test build_bar_graph setting values
|
||||
dataset = [[45,67,34,22],[22,45,12,34],[30,55,69,37]]
|
||||
x_axis_values = [1,2,3,4]
|
||||
dataset = [[45, 67, 34, 22], [22, 45, 12, 34], [30, 55, 69, 37]]
|
||||
x_axis_values = [1, 2, 3, 4]
|
||||
|
||||
output_html_2 = "graph_2.html"
|
||||
output_pdf_2 = "graph_2.pdf"
|
||||
@@ -280,7 +281,7 @@ if __name__ == "__main__":
|
||||
_yaxis_name="Throughput 2 (Mbps)",
|
||||
_xaxis_categories=x_axis_values,
|
||||
_graph_image_name="Bi-single_radio_2.4GHz",
|
||||
_label=["bi-downlink", "bi-uplink",'uplink'],
|
||||
_label=["bi-downlink", "bi-uplink", 'uplink'],
|
||||
_color=None,
|
||||
_color_edge='red')
|
||||
graph_html_obj = """
|
||||
@@ -296,8 +297,5 @@ if __name__ == "__main__":
|
||||
# write logic to generate pdf here
|
||||
# wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6-1/wkhtmltox_0.12.6-1.focal_amd64.deb
|
||||
# sudo apt install ./wkhtmltox_0.12.6-1.focal_amd64.deb
|
||||
options = {"enable-local-file-access" : None} # prevent eerror Blocked access to file
|
||||
options = {"enable-local-file-access": None} # prevent eerror Blocked access to file
|
||||
pdfkit.from_file(output_html_2, output_pdf_2, options=options)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -24,30 +24,29 @@ import numpy as np
|
||||
import pandas as pd
|
||||
import pdfkit
|
||||
from lf_report import lf_report
|
||||
from lf_graph import lf_bar_graph, lf_scatter_graph , lf_stacked_graph, lf_horizontal_stacked_graph
|
||||
from lf_graph import lf_bar_graph, lf_scatter_graph, lf_stacked_graph, lf_horizontal_stacked_graph
|
||||
|
||||
# Unit Test
|
||||
if __name__ == "__main__":
|
||||
|
||||
# Testing: generate data frame
|
||||
dataframe = pd.DataFrame({
|
||||
'product':['CT521a-264-1ac-1n','CT521a-1ac-1ax','CT522-264-1ac2-1n','CT523c-2ac2-db-10g-cu','CT523c-3ac2-db-10g-cu','CT523c-8ax-ac10g-cu','CT523c-192-2ac2-1ac-10g'],
|
||||
'radios':[1,1,2,2,6,9,3],
|
||||
'MIMO':['N','N','N','Y','Y','Y','Y'],
|
||||
'stations':[200,64,200,128,384,72,192],
|
||||
'mbps':[300,300,300,10000,10000,10000,10000]
|
||||
'product': ['CT521a-264-1ac-1n', 'CT521a-1ac-1ax', 'CT522-264-1ac2-1n', 'CT523c-2ac2-db-10g-cu',
|
||||
'CT523c-3ac2-db-10g-cu', 'CT523c-8ax-ac10g-cu', 'CT523c-192-2ac2-1ac-10g'],
|
||||
'radios': [1, 1, 2, 2, 6, 9, 3],
|
||||
'MIMO': ['N', 'N', 'N', 'Y', 'Y', 'Y', 'Y'],
|
||||
'stations': [200, 64, 200, 128, 384, 72, 192],
|
||||
'mbps': [300, 300, 300, 10000, 10000, 10000, 10000]
|
||||
})
|
||||
|
||||
print(dataframe)
|
||||
|
||||
# Testing: generate data frame
|
||||
dataframe2 = pd.DataFrame({
|
||||
'station':[1,2,3,4,5,6,7],
|
||||
'time_seconds':[23,78,22,19,45,22,25]
|
||||
'station': [1, 2, 3, 4, 5, 6, 7],
|
||||
'time_seconds': [23, 78, 22, 19, 45, 22, 25]
|
||||
})
|
||||
|
||||
|
||||
#report = lf_report(_dataframe=dataframe)
|
||||
# report = lf_report(_dataframe=dataframe)
|
||||
report = lf_report()
|
||||
|
||||
report_path = report.get_path()
|
||||
@@ -59,9 +58,8 @@ if __name__ == "__main__":
|
||||
report.set_title("Banner Title One")
|
||||
report.build_banner()
|
||||
|
||||
|
||||
#report.set_title("Banner Title Two")
|
||||
#report.build_banner()
|
||||
# report.set_title("Banner Title Two")
|
||||
# report.build_banner()
|
||||
|
||||
report.set_table_title("Title One")
|
||||
report.build_table_title()
|
||||
@@ -76,8 +74,8 @@ if __name__ == "__main__":
|
||||
report.build_table()
|
||||
|
||||
# test lf_graph in report
|
||||
dataset = [[45,67,34,22],[22,45,12,34],[30,55,69,37]]
|
||||
x_axis_values = [1,2,3,4]
|
||||
dataset = [[45, 67, 34, 22], [22, 45, 12, 34], [30, 55, 69, 37]]
|
||||
x_axis_values = [1, 2, 3, 4]
|
||||
|
||||
report.set_graph_title("Graph Title")
|
||||
report.build_graph_title()
|
||||
@@ -87,11 +85,10 @@ if __name__ == "__main__":
|
||||
_yaxis_name="Throughput 2 (Mbps)",
|
||||
_xaxis_categories=x_axis_values,
|
||||
_graph_image_name="Bi-single_radio_2.4GHz",
|
||||
_label=["bi-downlink", "bi-uplink",'uplink'],
|
||||
_label=["bi-downlink", "bi-uplink", 'uplink'],
|
||||
_color=None,
|
||||
_color_edge='red')
|
||||
|
||||
|
||||
graph_png = graph.build_bar_graph()
|
||||
|
||||
print("graph name {}".format(graph_png))
|
||||
@@ -103,7 +100,7 @@ if __name__ == "__main__":
|
||||
report.build_graph()
|
||||
set1 = [1, 2, 3, 4]
|
||||
set2 = [[45, 67, 45, 34], [34, 56, 45, 34], [45, 78, 23, 45]]
|
||||
graph2 = lf_scatter_graph(_x_data_set=set1, _y_data_set=set2, _xaxis_name="x-axis", _values = None,
|
||||
graph2 = lf_scatter_graph(_x_data_set=set1, _y_data_set=set2, _xaxis_name="x-axis", _values=None,
|
||||
_yaxis_name="y-axis",
|
||||
_graph_image_name="image_name1",
|
||||
_color=None,
|
||||
@@ -117,7 +114,8 @@ if __name__ == "__main__":
|
||||
|
||||
report.build_graph()
|
||||
# this will generate graph which is independent,we can customize the value with different colors
|
||||
graph2 = lf_scatter_graph(_x_data_set=set1, _y_data_set=[45, 67, 45, 34], _values=[0 , 0, 0, 1], _xaxis_name="x-axis",
|
||||
graph2 = lf_scatter_graph(_x_data_set=set1, _y_data_set=[45, 67, 45, 34], _values=[0, 0, 0, 1],
|
||||
_xaxis_name="x-axis",
|
||||
_yaxis_name="y-axis",
|
||||
_graph_image_name="image_name_map",
|
||||
_color=None,
|
||||
@@ -146,10 +144,8 @@ if __name__ == "__main__":
|
||||
report.move_graph_image()
|
||||
report.build_graph()
|
||||
|
||||
|
||||
|
||||
graph = lf_horizontal_stacked_graph(_seg= 2,
|
||||
_yaxis_set=('A','B'),
|
||||
graph = lf_horizontal_stacked_graph(_seg=2,
|
||||
_yaxis_set=('A', 'B'),
|
||||
_xaxis_set1=[12, 65],
|
||||
_xaxis_set2=[23, 34],
|
||||
_unit="",
|
||||
@@ -166,17 +162,17 @@ if __name__ == "__main__":
|
||||
report.set_graph_image(graph_png)
|
||||
report.move_graph_image()
|
||||
report.build_graph()
|
||||
#report.build_all()
|
||||
# report.build_all()
|
||||
|
||||
html_file = report.write_html()
|
||||
print("returned file {}".format(html_file))
|
||||
print(html_file)
|
||||
|
||||
# try other pdf formats
|
||||
#report.write_pdf()
|
||||
#report.write_pdf(_page_size = 'A3', _orientation='Landscape')
|
||||
#report.write_pdf(_page_size = 'A4', _orientation='Landscape')
|
||||
report.write_pdf(_page_size = 'Legal', _orientation='Landscape')
|
||||
#report.write_pdf(_page_size = 'Legal', _orientation='Portrait')
|
||||
# report.write_pdf()
|
||||
# report.write_pdf(_page_size = 'A3', _orientation='Landscape')
|
||||
# report.write_pdf(_page_size = 'A4', _orientation='Landscape')
|
||||
report.write_pdf(_page_size='Legal', _orientation='Landscape')
|
||||
# report.write_pdf(_page_size = 'Legal', _orientation='Portrait')
|
||||
|
||||
#report.generate_report()
|
||||
# report.generate_report()
|
||||
|
||||
Reference in New Issue
Block a user