【问题标题】:Python/Matplotlib - Change the relative size of a subplotPython/Matplotlib - 更改子图的相对大小
【发布时间】:2011-02-22 20:46:15
【问题描述】:

我有两个地块

import matplotlib.pyplot as plt
plt.subplot(121)
plt.subplot(122)

我希望plt.subplot(122) 的宽度是plt.subplot(121) 的一半。有没有一种直接的方法来设置子图的高度和宽度参数?

【问题讨论】:

标签: python matplotlib


【解决方案1】:

查看网格规范教程:

http://matplotlib.sourceforge.net/users/gridspec.html

示例代码:

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

f = plt.figure()

gs = gridspec.GridSpec(1, 2,width_ratios=[2,1])
              
ax1 = plt.subplot(gs[0])
ax2 = plt.subplot(gs[1])

plt.show()

您还可以使用 GridSpec 中的类似选项调整高度比

【讨论】:

  • 感谢您的提示。我无权将 matplotlib.gridspec 作为 gridspec 导入。还有其他方法吗?
  • 问题是您使用的是不支持 GridSpec 的旧版 matplotlib 吗?您的问题不清楚。
  • @thenickname : 你可以做import matplotlib 并打电话给matplotlib.gridspac.GridSpec(1, 2, etc.)
  • 有没有办法以绝对值指定子图/网格列的大小?即:绘制一个固定宽度的自定义颜色条?
【解决方案2】:

通过简单地使用“122”指定几何图形,您将隐含地获得自动、大小相等的列和行布局。

要自定义布局网格,您需要更具体一些。请参阅 Matplotlib 文档中的“Customizing Location of Subplot Using GridSpec”。

【讨论】:

    【解决方案3】:

    是的,如果你想将你的代码减少到一行,你可以将所有要传递给matplotlib.gridspec.GridSpec()的kwargs放入plt.subplots()gridspec_kw参数中:

    import matplotlib.pyplot as plt
    import pandas as pd
    import numpy as np
    
    fig, axs = plt.subplots(nrows=2, ncols=2, gridspec_kw={'width_ratios':[2,1], 'height_ratios':[2,1]})
    
    df = pd.DataFrame(np.random.randn(10, 3), columns=['A', 'B', 'C'])
    df.plot.bar(ax=axs[0][0])
    df.boxplot(ax=axs[0][1])
    df.plot.line(ax=axs[1][0])
    df.plot.kde(ax=axs[1][1])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 2017-03-01
      • 2015-08-15
      • 2017-07-25
      • 2021-10-30
      相关资源
      最近更新 更多