Подтвердить что ты не робот

Как добавить разные графики (в виде вставки) в другой граф python

Я бы хотел сделать такой график:

Ilustrative Figure from google

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

Ниже я добавляю код, который я использую, чтобы сделать фоновый график. Надеюсь, кто-то может помочь.

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()
4b9b3361

Ответ 1

Для этого существует более чем один способ, в зависимости от отношений, которые вы хотите иметь вставку.

Если вы просто хотите вставить граф, который не имеет установленного отношения с большим графом, просто сделайте что-то вроде:

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()

enter image description here

Если вы хотите иметь какую-то связь между ними, посмотрите на некоторые из примеров здесь: http://matplotlib.org/1.3.1/mpl_toolkits/axes_grid/users/overview.html#insetlocator p >

Это полезно, если вы хотите, чтобы вставка была "увеличенной" версией (скажем, ровно в два раза больше масштаба оригинала), которая будет автоматически обновляться при интерактивном панорамировании/масштабировании.

Для простых вложений, однако, просто создайте новые оси, как я показал в приведенном выше примере.

Ответ 2

Вы можете сделать это с помощью inset_axes методы (см документации):

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)

См. Этот пример для полной демонстрации.