notebook - subplot title python
Cómo mostrar Dataframe junto a Plot en Jupyter Notebook (1)
Entiendo cómo mostrar dos trazados uno al lado del otro (horizontalmente) en Jupyter Notebook, pero no sé si hay una manera de mostrar un gráfico con un marco de datos al lado. Me imagino que podría verse algo como esto:
Sin embargo, no puedo hacer esto, y cada vez que imprimo el marco de datos, aparece debajo de mi trama ...
Aquí hay una pregunta similar, pero también estoy generando gráficos dentro de esta misma celda que quiero que estén orientados verticalmente.
Actualmente tengo esto:
# line plots
df_plot[[''DGO %chg'',''DLM %chg'']].plot(figsize=(15,5),grid=True)
plt.ylim((-ylim,ylim))
df_plot[[''Diff'']].plot(kind=''area'',color=''lightgrey'',figsize=(15,1))
plt.xticks([])
plt.xlabel('''')
plt.ylim((0,ylim_diff))
plt.show()
# scatter plots
plt.scatter(x=df_scat[:-7][''DGO''],y=df_scat[:-7][''DLM''])
plt.scatter(x=df_scat[-7:][''DGO''],y=df_scat[-7:][''DLM''],color=''red'')
plt.title(''%s Cluster Last 7 Days''%asset)
plt.show()
# display dataframe
# display(df_scat[[''DGO'',''DLM'']][:10]) <-- prints underneath, not working
Donde el recuadro rojo muestra dónde quiero que aparezca mi marco de datos. ¿Alguien tiene alguna idea sobre cómo hacer esto?
¡Gracias por tus pensamientos!
No estoy al tanto de cómo controlar la ubicación de donde se mostrará directamente el DataFrame, pero una solución que utilicé en el pasado es renderizar el DataFrame como una tabla matplotlib y luego debe comportarse como cualquier otro gráfico matplotlib. Puedes usar:
import matplotlib.pyplot as plt
from matplotlib import six
import pandas as pd
import numpy as np
df = pd.DataFrame()
df[''x''] = np.arange(0,11)
df[''y''] = df[''x'']*2
fig = plt.figure(figsize=(8,5))
ax1 = fig.add_subplot(121)
ax1.scatter(x=df[''x''],y=df[''y''])
ax2 = fig.add_subplot(122)
font_size=14
bbox=[0, 0, 1, 1]
ax2.axis(''off'')
mpl_table = ax2.table(cellText = df.values, rowLabels = df.index, bbox=bbox, colLabels=df.columns)
mpl_table.auto_set_font_size(False)
mpl_table.set_fontsize(font_size)