Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Disable scroll down and show all data on table, plotly

Tags:

python

plotly

I created a table using plotly to calculate some financials, I would like to show the whole table in the graph interface (not just a few rows):

img

As you can see in the image, only 11 of my 30 rows are shown. I would like to show all the data of the table (all 30 rows with no scrollbar).

The code for the table is the following:

fig6 = go.Figure(data=[go.Table(
        header=dict(values=list(df_table.columns),
                    fill_color='#d3d3d3',
                    align='left'),
        cells=dict(values=[df_table['date'], 
                           df_table['P/E_Ratio'], 
                           df_table['Stock Price']],
                   fill_color='white',
                   align='left'))
    ])
like image 263
The Dan Avatar asked Nov 15 '22 09:11

The Dan


1 Answers

As Juan correctly stated, adding height to fig6.update_layout() will do the trick. If you are however looking for a more dynamic workaround, you can use this function to calculate the height when input with a dataframe-

def calc_table_height(df, base=208, height_per_row=20, char_limit=30, height_padding=16.5):
    '''
    df: The dataframe with only the columns you want to plot
    base: The base height of the table (header without any rows)
    height_per_row: The height that one row requires
    char_limit: If the length of a value crosses this limit, the row's height needs to be expanded to fit the value
    height_padding: Extra height in a row when a length of value exceeds char_limit
    '''
    total_height = 0 + base
    for x in range(df.shape[0]):
        total_height += height_per_row
    for y in range(df.shape[1]):
        if len(str(df.iloc[x][y])) > char_limit:
            total_height += height_padding
    return total_height

You might have to play around with the other features if you have a different font_size than the default, or if you change the margin from the default. Also, the char_limit argument of the function is the other weakpoint as some characters take up more space than others, capital characters take up more space, and a single word if long can force a row to be extended. It should also be increased if the number or columns are less and vice versa. The function is written taking 4 table columns into consideration.

You would have to add fig6.update_layout(height=calc_table_height(df_table)) to make it work.

like image 82
callmeanythingyouwant Avatar answered Dec 31 '22 20:12

callmeanythingyouwant