Mam dataframe i chcę go wkleić jako PNG / JPEG w programie PowerPoint. Chcę, żeby stół miała jakiś formatowanie. Próbowałem z matplotlib i wykresu, ale nie zbliżam się do końca końcowego.

Próbowałem:

import plotly.graph_objects as go
import pandas as pd

df = full_table
header_color = '#1D97FF'

fig = go.Figure(data=[go.Table(

    header=dict(values=list(df.columns),
                fill_color=header_color,
                align='left', 
                line_color='darkslategray', 
                font=dict(color='white', size=11)),

    cells=dict(values=[df.index, df.budget_revenue, df.budget_net_revenue, df.gross_margin,df.new_net_mrr,df.actual_shipments],
               fill_color=['white'],
               align='left', line_color='darkslategray', font=dict(color='black', size=11)))                   
])

fig.write_image("fig1.png")
fig.show()

I próbowałem:

import matplotlib.pyplot as plt
# Prepare table

df = full_table
hc = '#1D97FF'

columns=full_table.columns.to_list()
index=full_table.index.to_list()
values=full_table.values.tolist()
# Add a table at the bottom of the axes
colors = [["#56b5fd","w","w","w","w","w","w"],[ "#1ac3f5","w","w","w","w","w","w"]]


# Add a table at the bottom of the axes
colors = [["w","w","w","w","w","w"],[ "w","w","w","w","w","w"],
         [ "w","w","w","w","w","w"],[ "w","w","w","w","w","w"],
         [ "w","w","w","w","w","w"],[ "w","w","w","w","w","w"],
         [ "w","w","w","w","w","w"],[ hc,hc,hc,hc,hc,hc]]
colors1 =  ["w","w","w","w","w","w","w",hc]
colors2 = [ hc,hc,hc,hc,hc,hc]

fig, ax = plt.subplots()

ax.axis('off')
the_table = ax.table(cellText=values,cellColours=colors,
                     colLabels=columns,colColours=colors2,rowLabels=index, rowColours=colors1,loc='center')

plt.show()

Pierwsza opcja wygląda już całkiem w porządku. Niektóre drobne zmiany, ale nie mogę uzyskać dolnego wiersza, aby stać się niebieski. A nagłówki kolumn nie pasują. Druga opcja jest rozmazana, górny lewy narożnik pozostaje pusty, a wiele edycji czcionek powinno być wykonane, które też się nie udało.

Czy nie używam nie odpowiednich bibliotek. Utknął na pewnym prostym formatowaniu, który odbywa się za pomocą programu Excel za minutę.

Tak to powinno wyglądać:

Outcome

0
SMP 19 marzec 2020, 15:54

1 odpowiedź

Najlepsza odpowiedź

Powinieneś podzielić swój stół na trzy części logiczne:

  1. Nagłówek
  2. "centralna" treść
  3. ostatni wiersz

To jest kod:

import plotly.graph_objects as go
import pandas as pd

data = [['Jan-20', 1.0, 1, 4.0, 0, 250000.0],
        ['Jan-20', 2.0, 2, 4.0, 0, 250000.0],
        ['Jan-20', 3.0, 3, 4.0, 0, 250000.0],
        ['Jan-20', 3.0, 3, 4.0, 0, 250000.0],
        ['Jan-20', 3.0, 3, 4.0, 0, 250000.0],
        ['Jan-20', 3.0, 3, 4.0, 0, 250000.0],
        ['Jan-20', 4.0, 4, 4.0, 0, 250000.0],
        ['Jan-20', 5, 232, 114, 2312, 123]]
index = ['NL', 'DE', 'AT', 'FR', 'BE', 'ES', 'IT', 'Global']
columns = ['Months', 'budget_rev', 'budget_net_rev', 'gross_margin', 'new_net_mrr', 'act_shipments']
df = pd.DataFrame(data, index=index, columns=columns) 

df.reset_index(inplace=True)
n_cols = len(columns)
n_rows = len(data)

header_c = 'dodgerblue'
rows_c = ['white']*(n_rows-1)

rows_c.extend(['dodgerblue'])

rows_f = ['darkslategray']*(n_rows-1)
rows_f.extend(['white'])

fig = go.Figure(data=[go.Table(columnwidth = [80]*(n_cols+1),
                               header=dict(values=list(df.columns),
                                           line_color='darkslategray',
                                           fill_color=header_c,
                                           font=dict(color='white',
                                                     size=12)),
                               cells=dict(values=list(df.values.transpose()),
                                          line_color='darkslategray',
                                          fill_color = [rows_c*n_cols],
                                          font = dict(color = [rows_f*n_cols],
                                                      size = 12)))])

fig.show()

I otrzymujesz:

enter image description here

1
sentence 22 marzec 2020, 12:36