У меня есть DataFrame, и я хочу вставить его в формате PNG / JPEG в Powerpoint. Я хочу, чтобы таблица имела некоторое форматирование. Я пытался с Matplotlib, и плотно, но я не приближаюсь к конечному результату.
Я пытался:
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()
И я пытался:
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()
Первый вариант выглядит уже вполне нормально. Некоторые незначительные изменения, но я не могу получить нижний ряд, чтобы стать синим. И заголовки столбцов не подходят. Второй вариант - размытый, верхний левый угол остается пустым, и нужно сделать гораздо больше редактирования шрифтов, с чем мне тоже не удалось.
Я просто использую не нужные библиотеки. Застрял на простом форматировании, которое выполняется в Excel за минуту.
Вот как это должно выглядеть: