【问题标题】:How to plot 4 graphs in one screen for twinx or twiny method?如何在一个屏幕上为 twinx 和 twiny 方法绘制 4 个图形?
【发布时间】:2020-04-23 07:36:31
【问题描述】:

我想绘制两个 y 轴和一个 x 轴,一个图形窗口中只有一张图片我知道该怎么做,但是如何更改此代码以在一个图形窗口中绘制 4 张图片?

ax1 = axes()
ax2 = ax1.twinx()

x = np.arange(100)
y1 = np.random.rand(100)
y2 = np.random.rand(100)

ax1.plot(x,y1,'-r')
ax1.set_ylim(-1,1)
ax2.fill_between(x,0,y2,color='b',alpha=0.5)
ax2.set_ylim(0,2)

ax1.set_ylabel('Red')
ax2.set_ylabel('Blue') 

【问题讨论】:

  • 您在寻找subplots吗?
  • @Patol75 我熟悉带有一个 y 轴的简单子图,这里我想绘制带有两个 y 轴的子图
  • 假设您以这种方式调用子图:fig, (ax, bx, cx, dx) = plt.subplots(nrows=2, ncols=2),您仍然可以按照您在问题中描述的方式对每个轴进行孪生。会是你所追求的吗?
  • @Patol75 请您为此添加示例吗?
  • 见下文。另外,很抱歉上面的错误,我总是这样做:即使子图生成 4 个轴,它们也被打包到两个列表中,因为既有多行又有多列。

标签: python-3.x pandas numpy matplotlib


【解决方案1】:

这是一种可行的方法。我只缠绕了一根轴,但实际上所有轴都可以类似处理。

import matplotlib.pyplot as plt
import numpy as np
fig, axarr = plt.subplots(nrows=2, ncols=2)
axTx = axarr[0, 0].twinx()
x = np.logspace(-1, 1, 100)
axarr[0, 0].plot(x, x, linewidth=2, color='xkcd:azure')
axTx.plot(x, 1 / x, linewidth=2, color='xkcd:avocado')
axarr[0, 0].tick_params(axis='y', labelcolor='xkcd:azure')
axTx.tick_params(axis='y', labelcolor='xkcd:avocado')
fig.tight_layout()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多