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

创建两个子图后如何共享它们的x轴?

欧阳晗日
2023-03-14
问题内容

我正在尝试共享两个子图轴,但是在创建图形之后,我需要共享x轴。因此,例如,我创建了这个图:

import numpy as np
import matplotlib.pyplot as plt

t= np.arange(1000)/100.
x = np.sin(2*np.pi*10*t)
y = np.cos(2*np.pi*10*t)

fig=plt.figure()
ax1 = plt.subplot(211)
plt.plot(t,x)
ax2 = plt.subplot(212)
plt.plot(t,y)

# some code to share both x axis

plt.show()

除了注释,我将插入一些代码以共享两个x轴。我没有发现任何线索我可以做到这一点。有一些属性
_shared_x_axes_shared_x_axes当我检查图轴(fig.get_axes())时,我不知道如何链接它们。


问题答案:

共享轴的常用方法是在创建时创建共享属性。要么

fig=plt.figure()
ax1 = plt.subplot(211)
ax2 = plt.subplot(212, sharex = ax1)

要么

fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True)

因此,无需在创建轴之后共享轴。

但是,如果由于某种原因需要 在创建轴后共享轴
(实际上,使用另一个库可以创建一些子图,例如here,或者共享插入轴可能是一个原因),仍然有解决方案:

使用

ax1.get_shared_x_axes().join(ax1, ax2)

在两个轴之间创建链接,ax1并且ax2。与创建时的共享相比,您必须为其中一个轴手动设置xticklabel(以防万一)。

一个完整的例子:

import numpy as np
import matplotlib.pyplot as plt

t= np.arange(1000)/100.
x = np.sin(2*np.pi*10*t)
y = np.cos(2*np.pi*10*t)

fig=plt.figure()
ax1 = plt.subplot(211)
ax2 = plt.subplot(212)

ax1.plot(t,x)
ax2.plot(t,y)

ax1.get_shared_x_axes().join(ax1, ax2)
ax1.set_xticklabels([])
# ax2.autoscale() ## call autoscale if needed

plt.show()


 类似资料:
  • 我可以访问figure实例。我知道在这个图中有一个图例,我可以通过。现在我想更改图例的属性。其中一些我可以通过设置器访问,比如。 创建图例时,它接受多个关键字参数: 类matplotlib。传奇传奇(父项、句柄、标签、loc=None、numpoints=None、markerscale=None、scatterpoints=None、scatteryoffsets=None、prop=None、

  • 我已经编写了一个库,过去我使用自编的Makefile编译它,但现在我想切换到cmake。树是这样的(我删除了所有不相关的文件): 我只是想把它编译到一个共享的文件库中。 我发现的大多数示例都使用一些共享库编译可执行文件,但绝不仅仅是一个普通的共享库。如果有人能告诉我一个使用cmake的非常简单的库,那也会很有帮助,所以我可以用这个作为例子。

  • 我的groovy脚本都在git存储库中,使用jenkins checkout SCM。其中一个groovy脚本中有一些常用函数,我想使这个groovy成为一个共享库,而无需打开jenkins并在jenkins管理表中添加共享库。 我可以使用RESTAPI或其他方法添加新库吗?

  • 问题内容: 我试图获得两个计数,然后将这两个计数相除,以得出我所计数的项目的比率。我在这里看到了这篇文章,并尝试了。我的结果出现错误,没有错误消息,只是错误的数字。我正在使用SQL Server 2008 这是我的代码: 计数正确产生并显示,但是对于比率,我为0,并且不确定为什么会得到此值。 谢谢你, 问题答案: 使用 SQL Server认为A.NUM / A.DENOM是int,因为A.NUM

  • 问题内容: 我有2个需要共享状态的React组件,react- router显示了组件A,该组件接受一些输入并将其添加到其状态,在状态成功更新后,我想重定向到组件B,用户在其中添加在我向我的api提交发布请求以保存来自组件A和B的数据之前,使用一些更多的输入并更新与组件A相同的状态以使用来自A和B的输入来构建对象。如何做到这一点,使用react- router的方式,还是我必须在组件之间设置父/子

  • 我想为消息驱动的EJB创建一个主题上的共享、非持久订阅,并想知道如何使用@MessageDriven和@ActivationConfigProperty来实现这一点。 我发现一篇文章描述了类似的事情,但我不确定这是否适用于我的问题: 订阅的共享依赖于客户端id的设置,不仅对于持久订阅(总是需要客户端id),对于非持久订阅(通常不需要客户端id)也是如此。如果订阅是由资源适配器创建的,以供消息驱动b