Je voudrais faire un graphique comme ça:
le problème est que j'ai les données de certains fichiers externes et que je peux faire le graphique d'arrière-plan, mais je ne sais pas comment ajouter un autre graphique à l'intérieur de celui que j'ai déjà et modifier les données pour obtenir des résultats différents dans les deux:
Ci-dessous, j'ajoute le code que j'utilise pour faire le graphique d'arrière-plan. J'espère que quelqu'un pourra vous aider.
from __future__ import division
import numpy as np
import matplotlib.pyplot as plt
plt.rc('text',usetex=True)
font = {'family':'serif','size':16}
plt.rc('font',**font)
plt.rc('legend',**{'fontsize':14})
matplotlib.rcParams['text.latex.preamble']=[r'\usepackage{amsmath}']
data=np.loadtxt(r'C:\...\file.txt')
plt.plot(data[:,0],data[:,6],linewidth = 3,label='B$_0$ = 1.5 T d',linestyle= '--', color='black')
plt.show()
Il y a plus d'une façon de faire cela, selon la relation que vous souhaitez que l'encart ait.
Si vous souhaitez simplement insérer un graphique qui n'a pas de relation définie avec le graphique plus grand, faites simplement quelque chose comme:
import matplotlib.pyplot as plt
fig, ax1 = plt.subplots()
# These are in unitless percentages of the figure size. (0,0 is bottom left)
left, bottom, width, height = [0.25, 0.6, 0.2, 0.2]
ax2 = fig.add_axes([left, bottom, width, height])
ax1.plot(range(10), color='red')
ax2.plot(range(6)[::-1], color='green')
plt.show()
Si vous voulez avoir une sorte de relation entre les deux, jetez un œil à quelques exemples ici: http://matplotlib.org/1.3.1/mpl_toolkits/axes_grid/users/overview.html#insetlocator
Ceci est utile si vous voulez que l'encart soit une version "zoomée" (disons, exactement à deux fois l'échelle de l'original) qui se mettra automatiquement à jour lorsque vous effectuez un panoramique/zoom interactif.
Pour les encarts simples, cependant, créez simplement de nouveaux axes comme je l'ai montré dans l'exemple ci-dessus.
Vous pouvez le faire avec inset_axes
méthode (voir docs ):
from mpl_toolkits.axes_grid1.inset_locator import inset_axes
inset_axes = inset_axes(parent_axes,
width="30%", # width = 30% of parent_bbox
height=1., # height : 1 inch
loc=3)
Voir cet exemple pour une démonstration complète.