Matplotlib多个子图根据要求确定间距

时间:2018-11-13 06:59:14

标签: python pandas matplotlib

一个关于间距matplotlib子图的非常简单的问题,尽管对plt.tight_layout或plt.subplots_adjust进行了多次迭代。我仍然无法在子图之间留出适当的空间

以下是示例python代码

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline


dict1 = {'importance': {'var1': 67.18,'var2': 50.33,'var3': 29.33,
   'var4': 27.17, 'var5': 24.880}}

dict2 = {'importance': {'var3': 50.18,'var1': 30.33,'var2': 29.33,
  'var4': 24.17, 'var5': 7.880}}


df1 = pd.DataFrame.from_dict(dict1)
df2 = pd.DataFrame.from_dict(dict2)


fig, (ax1, ax2) = plt.subplots(1,2)
fig = plt.figure(figsize=(60,60))
fig.subplots_adjust(wspace=10)
df1.plot(kind = 'barh', ax = ax1)
df2.plot(kind = 'barh', ax = ax2)

所以图是enter image description here

当然不是我要找的,我正在寻找范围广泛的子图。请帮助

2 个答案:

答案 0 :(得分:2)

您的问题是Matrix<int> A(3, 4); std::vector<int> v {1, 2, 3, 4}; Matrix<int> row(1, 4, 3); // ***************** A[0] = v; A[1] = row; // ***************** 创建了第二个图形,因此当您调用fig = plt.figure(figsize=(60,60))时,它将修改此第二个图形,而不是您具有绘制轴的那个图形。解决此问题的一种方法是,首先在对子图fig.subplots_adjust(wspace=10)的调用中包含关键字figsize,然后删除对下面的fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(60, 60)的调用,最后调整figure的值。

答案 1 :(得分:1)

您可以做的是:

fig, (ax1, ax2) = plt.subplots(1,2,figsize=(10,10))
fig.subplots_adjust(wspace=0.5)
df1.plot(kind = 'barh', ax = ax1)
df2.plot(kind = 'barh', ax = ax2)
plt.show()

输出: enter image description here