Refactoring
This commit is contained in:
parent
54484d9ad0
commit
0f6cbec1d5
70
test/fixtures/page_generation/page.py
vendored
70
test/fixtures/page_generation/page.py
vendored
@ -421,71 +421,51 @@ class RandomTable(RandomContentRectangle):
|
||||
def __init__(self, x1, y1, x2, y2, seed=None):
|
||||
super().__init__(x1, y1, x2, y2, seed=seed)
|
||||
|
||||
# def generate_random_table(self, rectangle: Rectangle):
|
||||
# """Generates the image of a random table.
|
||||
#
|
||||
# Reference: https://stackoverflow.com/questions/35634238/how-to-save-a-pandas-dataframe-table-as-a-png
|
||||
# """
|
||||
# # df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
|
||||
# df = self.generate_random_dataframe(rectangle, 12)
|
||||
# print(df)
|
||||
#
|
||||
# from pandas.plotting import table
|
||||
#
|
||||
# ax = plt.subplot(111, frame_on=False)
|
||||
# ax.xaxis.set_visible(False)
|
||||
# ax.yaxis.set_visible(False)
|
||||
#
|
||||
# table(ax, df)
|
||||
# plt.savefig('/tmp/mytable.png')
|
||||
#
|
||||
# image = dump_plt_to_image(rectangle)
|
||||
# image.show()
|
||||
#
|
||||
# self.content = image
|
||||
|
||||
def generate_random_table(self, rectangle: Rectangle):
|
||||
"""Generates the image of a random table.
|
||||
|
||||
Reference: https://stackoverflow.com/questions/35634238/how-to-save-a-pandas-dataframe-table-as-a-png
|
||||
"""
|
||||
import dataframe_image as dfi
|
||||
|
||||
df = self.generate_random_dataframe(rectangle, 11)
|
||||
table_lines = self.generate_random_ascii_table(rectangle, 11)
|
||||
print(df)
|
||||
|
||||
text_table = self.generate_random_ascii_table(rectangle)
|
||||
table_lines = text_table.split("\n")
|
||||
image = write_lines_to_image(table_lines, rectangle)
|
||||
|
||||
# df_styled = df.style.background_gradient()
|
||||
# buf = io.BytesIO()
|
||||
# dfi.export(df_styled, buf)
|
||||
# image = Image.open(buf)
|
||||
# image = image.resize((rectangle.width, rectangle.height))
|
||||
|
||||
self.content = image
|
||||
|
||||
def generate_random_dataframe(self, rectangle: Rectangle, font_size: int):
|
||||
def generate_random_dataframe(self, rectangle: Rectangle):
|
||||
"""Generates a random dataframe that has as many rows and columns as to fit the given rectangle."""
|
||||
|
||||
h_factor = font_size * 5
|
||||
v_factor = font_size * 2
|
||||
image = Image.new("RGB", (rectangle.width, rectangle.height), color="white")
|
||||
draw = ImageDraw.Draw(image)
|
||||
text_size = draw.textsize("dummy", font=ImageFont.load_default())[1]
|
||||
|
||||
rows = rectangle.height // h_factor
|
||||
cols = rectangle.width // v_factor
|
||||
rows = rectangle.height // text_size
|
||||
|
||||
col_names = list(string.ascii_uppercase)
|
||||
|
||||
cols = min(rectangle.width // text_size, len(col_names))
|
||||
|
||||
df = pd.DataFrame(
|
||||
np.random.randint(0, 100, size=(rows, cols)),
|
||||
columns=list(string.ascii_uppercase[:cols]),
|
||||
columns=col_names[:cols],
|
||||
)
|
||||
|
||||
return df
|
||||
|
||||
def generate_random_ascii_table(self, rectangle: Rectangle, font_size: int):
|
||||
df = self.generate_random_dataframe(rectangle, font_size)
|
||||
text_table = tabulate(df, headers="keys", tablefmt="psql")
|
||||
lines = text_table.split("\n")
|
||||
return lines
|
||||
def generate_random_ascii_table(self, rectangle: Rectangle):
|
||||
df = self.generate_random_dataframe(rectangle)
|
||||
table_format = random.choice(
|
||||
[
|
||||
"simple",
|
||||
"grid",
|
||||
"presto",
|
||||
"psql",
|
||||
"rst",
|
||||
]
|
||||
)
|
||||
text_table = tabulate(df, headers="keys", tablefmt=table_format)
|
||||
return text_table
|
||||
|
||||
|
||||
def dump_plt_to_image(rectangle):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user