Создание таблицы из фрейма данных Panda - PullRequest
0 голосов
/ 25 февраля 2020

В настоящее время у меня есть сценарий python, который анализирует дамп jstack и выводит кадр данных, например:

Dataframe

Я хочу превратить его в изображение в формате png или jpg: таблица, содержащая эти данные. Что-то простое, как это:

Table

Кто-нибудь знает, какой самый простой и простой способ создать изображение, подобное этому, чтобы оно сохранялось по тому же пути, по которому я запускаю код?

Спасибо! Хавьер

*** РЕДАКТИРОВАТЬ:

Предлагаемые решения выводят нечитаемую таблицу с преимущественно пробелами, как показано ниже:

Вывод таблицы

Может кто-нибудь подсказать, что я делаю неправильно и какие параметры настроить?

*** EDIT # 2:

Вот мой код:

df = pd.DataFrame(table_data, columns = ["Method Name", "# of threads", "% of threads"])

ax = plt.subplot(111, frame_on=False)
ax.xaxis.set_visible(False)
ax.yaxis.set_visible(False)

t = table(ax, df)
t.auto_set_font_size(False)
t.set_fontsize(12)
fig.savefig("test.png")

И токовый выход:

Выход таблицы # 2

*** РЕДАКТИРОВАНИЕ № 3:

Это кадр данных, который я передаю:

                                         Method Name # of threads % of threads
0  at sun.nio.ch.EPollArrayWrapper.epollWait(Nati...           33        32.35
1             at sun.misc.Unsafe.park(Native Method)           29        28.43
2                                NO JAVA STACK TRACE           18        17.64
3  at java.net.PlainSocketImpl.socketAccept(Nativ...            6        05.88
4  at xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...            5        04.90
5            at java.lang.Object.wait(Native Method)            4        03.92
6           at java.lang.Thread.sleep(Native Method)            3        02.94
7  at java.net.SocketInputStream.socketRead0(Nati...            3        02.94
8  at sun.nio.ch.ServerSocketChannelImpl.accept0(...            1        00.98

1 Ответ

3 голосов
/ 25 февраля 2020

Можете ли вы попробовать это?

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.axis('off')
ax.axis('tight')
t= ax.table(cellText=df.values, colWidths = [0.9]*len(df.columns),  colLabels=df.columns,  loc='center')
t.auto_set_font_size(False) 
t.set_fontsize(8)
fig.tight_layout()
plt.show()

Это вывод, который я получил: Вы можете изменить 0,9 ширины столбца, чтобы изменить ширину столбца и изменить шрифт, если он слишком мал enter image description here Вы используете таблицу pandas, используя эту таблицу.

from pandas.plotting import table
table(df)

Вы можете скрыть все оси и кадры, используя следующий код

ax = plt.subplot(111, frame_on=False)
ax.xaxis.set_visible(False)
ax.yaxis.set_visible(False)
table(ax, df)

Вы можете сохраните таблицу, используя savefig.

plt.savefig('table.png')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...