Je comprends comment afficher deux tracés côte à côte (horizontalement) dans Jupyter Notebook, mais je ne sais pas s'il existe un moyen d'afficher un tracé avec une trame de données à côté. J'imagine que cela pourrait ressembler à ceci:
Cependant, je ne suis pas en mesure de le faire, et chaque fois que j'imprime la trame de données, elle apparaît sous mon tracé ...
Ici est une question similaire, mais je génère également des tracés dans cette même cellule que je veux orienter verticalement.
J'ai actuellement ceci:
# 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
Où la boîte rouge indique où je veux que mon cadre de données apparaisse. Quelqu'un at-il des idées sur la façon de procéder?
Merci pour vos pensées!
Je ne sais pas comment contrôler l'emplacement où le DataFrame s'affichera directement - mais une solution que j'ai utilisée dans le passé est de rendre le DataFrame comme une table matplotlib, puis il devrait se comporter comme n'importe quel autre tracé matplotlib. Vous pouvez utiliser:
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)
Une autre possibilité est d'utiliser le html pour commander des choses, en suivant https://stackoverflow.com/a/44923103/49089 .
Voici un exemple de travail (il existe probablement des façons plus élégantes de le faire):
prefix = \
"""
<!DOCTYPE html>
<html>
<head>
<style>
* {
box-sizing: border-box;
}
.column {
float: left;
width: 33.33%;
padding: 5px;
}
/* Clearfix (clear floats) */
.row::after {
content: "";
clear: both;
display: table;
}
</style>
</head>
<body>
<h2>title</h2>
<div class="row">
<div class="column">
"""
suffix = \
"""
</div>
<div class="column">
<img src="pic_file.png" alt="Graph" style="width:100%">
</div>
</div>
</body>
</html>
"""
df = pd.DataFrame(np.arange(36).reshape((6,6)),columns=['A','B','C','D','E','F'])
ax = df.plot(lw=4)
title = "mock data"
fig = ax.get_figure()
fig.savefig(title+".png")
html = prefix.replace('title', title)+df.to_html()+suffix.replace('pic_file.png', title+".png")
display_html(html, raw=True)
Vous pouvez utiliser% matplotlib inline puis simplement écrire le code ex df.head () plt.plot (df ['X']) pour que% matplotlib inline trace le bloc de données ainsi que le tracé dans une cellule