当前位置: 首页 > 面试题库 >

在matplotlib中绘制具有固定限制的自动缩放子图

雷骁
2023-03-14
问题内容

在matplotlib中,制作一系列具有相同X和Y比例尺的子图的最佳方法是什么,但这些方法是根据具有最极端数据的子图的最小/最大范围来计算的?例如,如果您要绘制一系列直方图:

# my_data is a list of lists
for n, data in enumerate(my_data):
  # data is to be histogram plotted
  subplot(numplots, 1, n+1)
  # make histogram
  hist(data, bins=10)

每个直方图将在X和Y轴上具有不同的范围/刻度。我希望这些设置都相同,并根据绘制的直方图的最极端直方图限制进行设置。一种笨拙的方法是记录每个图的X /
Y轴的最小值/最大值,然后在绘制每个子图后遍历每个子图,并在绘制后再遍历它们的轴,但是必须有更好的方法在matplotlib中。

是否可以通过某些共享轴的变体来实现?


问题答案:

Matplotlib /
Pyplot:如何一起放大子图?

http://matplotlib.org/examples/pylab_examples/shared_axis_demo.html

http://matplotlib.org/users/recipes.html

引用最后一个链接:

Fernando Perez提供了一种很好的顶级方法,可以一次在subplots()中创建所有内容(最后请注意“
s”),然后关闭整个对象的x和y共享。您可以单独打开轴的包装:

# new style method 1; unpack the axes
fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, sharex=True,

sharey=True)
ax1.plot(x)

或以支持numpy索引的numrow x numcolumns对象数组的形式返回它们:

# new style method 2; use an axes array
fig, axs = plt.subplots(2, 2, sharex=True, sharey=True)
axs[0,0].plot(x)

如果您使用的是以下版本的旧版本,则matplotlib该方法应该有效(也引用了最后一个链接)

轻松创建子图在matplotlib的早期版本中,如果要使用pythonic
API并创建图形实例,然后从中创建子图网格(可能带有共享轴),则需要大量样板代码。例如

# old style
fig = plt.figure()
ax1 = fig.add_subplot(221)
ax2 = fig.add_subplot(222, sharex=ax1, sharey=ax1)
ax3 = fig.add_subplot(223, sharex=ax1, sharey=ax1)
ax3 = fig.add_subplot(224, sharex=ax1, sharey=ax1)


 类似资料:
  • 问题内容: 我只想绘制数组的一部分,固定x部分,但让y部分自动缩放。我尝试如下所示,但它不起作用。 有什么建议? 问题答案: 自动缩放总是使用整个数据范围,因此y轴将按y数据的全部范围缩放,而不仅仅是x范围内的缩放。 如果要显示数据的子集,那么仅绘制该子集可能是最简单的:

  • 问题内容: 我需要使用matplotlib获取一个自动拟合数据的图。这是我得到的代码: 这样就创建了一个图,但是无论数据是什么,窗口都始终是相同的(0-〜.8),即使所有数据都在该窗口之外。生成的窗口无法放大,只能放大,因此这是一个主要问题。我找不到在任何地方设置任何类型的大小设置的地方,II也找不到关于默认值的详细信息。我需要一个窗口来自动拟合数据,但是我找不到能执行此操作的任何函数(由于某些原

  • 我正在用Mapbox js制作泡泡地图。 问题是:如果点低于某个值,我会试图阻止点出现。当前显示的值为0。 设置点的函数如下所示。我已经注释掉了一个不成功的if语句。 数据从geoJSON文件加载,该文件是一个对象数组。每个对象每年都有属性。如。 如果我去掉值低于200的值,就像上面的例子一样,这将在控制台中返回一个错误。这些点仍然显示出来,但这是一次大规模的黑客攻击。 有人能告诉我一个更干净的方

  • 我有一个固定点,我想画一条线,穿过这个固定点,并且与x轴成45度角,即斜率1。 如何使用matplotlib执行此操作?

  • 问题内容: 我正在使用matplotlib在Python中绘制数据。我正在基于一些计算更新图的数据,并希望ylim和xlim自动重新缩放。取而代之的是,比例是根据初始图的限制设置的。MWE是 第一个plot命令从中生成一个图,我可以看到一切正常。最后,y-data数组的起始位置大于,但该图的y限制仍然存在。 我知道我可以使用手动更改限制,但是我不知道将其更改为什么。在循环中,我可以告诉pyplot

  • 给定一个信号的时间表示图,如何画出相应的时间指标线? 具体来说,给定一个时间索引范围为0到2.6(s)的信号图,我想画垂直红线,指示列表的相应时间索引,我该怎么做?