У меня есть динамическая таблица Plotly. Она получает фрейм данных из SQL-запроса с помощью Pandas. Высота таблицы постоянно меняется, и я не устанавливаю текущее значение. После сервировки стола она должна отправить фото с помощью телеграм-бота айограммы. Как удалить пробелы под таблицей, которые возникают, если я не устанавливаю текущую высоту?
figure = go.Figure(data=[go.Table(
columnwidth=[300, 200, 500, 500, 150, 400, 500, 150],
header=dict(
values=['<b>Date</b>', '<b>Time</b>', '<b>Client</b>', '<b>Service</b>', '<b>Price</b>', '<b>Tips</b>', '<b>Additional</b>', '<b>Work time</b>'],
align=['center'],
height=40
),
cells=dict(
values=dataframe.transpose().values.tolist(),
align=['center'],
height=30
),
)])
figure.update_layout(autosize=False, margin = {'l': 0, 'r': 0, 't': 0, 'b': 0}, width=1280)
figure.write_image("db/records.png")
UPD: dataframe.head().to_dict() репост
{'0': {0: '2022-10-24'}, '1': {0: '15:00'}, '2': {0: 'Bob'}, '3': {0: 'Radiator replacement'}, '4': {0: '16'}, '5': {0: '4'}, '6': {0: 'No'}, '7': {0: '2.0 h'}}
@Хамза я написал
Вы можете установить высоту на 100 или что-то в этом роде. figure.update_layout(autosize=False, height=100, margin = {'l': 0, 'r': 0, 't': 0, 'b': 0}, width=1280)
@r-beginners я написал, что у меня есть динамическая таблица, в которой количество строк будет постоянно меняться






Я решил проблему. Я умножил количество строк на высоту строки и добавил к этому высоту заголовка. Чтобы избежать проблем с ячейками, содержащими две строки, я прошелся по фрейму данных и экспериментальным путем определил, сколько символов содержится в ячейке, содержащей две строки. Далее, используя эти значения, я определил высоту таблицы, грубо посчитав, что ячейка, содержащая две строки, в 1,6 больше, чем ячейка, состоящая из одной строки.
def get_table_height(dataframe):
rows = []
double_height = 0
for index, data in dataframe.iterrows():
rows.append(index)
if len(data[2]) > 28 or len(data[3]) > 28 or len(data[5]) > 28 or len(data[6]) > 28:
double_height += 1
one_rows_count = (len(rows) - double_height)
one_rows = one_rows_count * 30
double_rows = double_height * 48
return 40 + one_rows + double_rows
Пожалуйста, добавьте некоторые данные к вашему вопросу, скопировав результат
dataframe.head().to_dict().