如何在另一个python图中添加不同的图(作为插图)[重复]

Posted

技术标签:

【中文标题】如何在另一个python图中添加不同的图(作为插图)[重复]【英文标题】:How to add different graphs (as an inset) in another python graph [duplicate] 【发布时间】:2014-01-26 20:59:17 【问题描述】:

我想做一个这样的图表:

问题是,我从一些外部文件中获取了数据,我可以制作背景图,但我不知道如何在我已有的图中添加另一个图并将数据更改为两者的结果不同:

下面我添加了用于制作背景图的代码。 希望有人能帮忙。

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'\usepackageamsmath']

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

【问题讨论】:

更多选项见答案to this post。 【参考方案1】:

您可以使用inset_axes 方法执行此操作(请参阅docs):

from mpl_toolkits.axes_grid1.inset_locator import inset_axes
inset_ax = inset_axes(parent_axes,
                    , # width = 30% of parent_bbox
                    height=1., # height : 1 inch
                    loc=3)

请参阅 this example 以获取完整演示。

【讨论】:

【参考方案2】:

有不止一种方法可以做到这一点,具体取决于您希望插图具有的关系。

如果您只想插入一个与更大的图没有固定关系的图,只需执行以下操作:

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

如果您想在两者之间建立某种关系,请查看此处的一些示例:http://matplotlib.org/1.3.1/mpl_toolkits/axes_grid/users/overview.html#insetlocator

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

不过,对于简单的插图,只需创建一个新轴,如我在上面的示例中所示。

【讨论】:

fig.add_axes() 在 Jupyter 中不适合我。 fig.axes() 成功了。 有没有办法为图中的每个子图添加轴,但坐标相对于子图? 没关系,只需向下滚动即可发现inset_axes

以上是关于如何在另一个python图中添加不同的图(作为插图)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Seaborn 在一个图中绘制多个不同的图

在Matplotlib中,如何将3D图作为插图包含进去?

如何在散点图中添加图像而不是点(python)[重复]

超棒!教你用 Python 绘制炫酷专业插图

UITableViewController 作为小视图中的子视图控制器 - 键盘问题

用 Python 画如此漂亮的专业插图 ?简直 So easy!