如何在另一个python图中添加不同的图形(作为插图)

时间:2014-01-08 16:22:32

标签: python graph matplotlib

我想制作一个这样的图表:

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

2 个答案:

答案 0 :(得分:36)

根据你想要插图的关系,有多种方法可以做到这一点。

如果您只想插入与较大图表没有设置关系的图表,请执行以下操作:

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

如果您希望插图是“放大”版本(例如,缩放比原始尺寸的两倍),这会在您以交互方式平移/缩放时自动更新,这非常有用。

对于简单插图,只需创建一个新轴,如上例所示。

答案 1 :(得分:10)

您可以使用inset_axes方法执行此操作(请参阅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)

有关完整演示,请参阅this example