【问题标题】:Assign figure to correct subplot将图分配给正确的子图
【发布时间】:2018-06-14 05:07:14
【问题描述】:

我有一组显示不同信息的subplot's。对于下面的示例,我可以将散点图分配给指定的子图,但两个distplot 占据了最后创建的子图。

import matplotlib.pyplot as plt
import seaborn as sns

x = [1,4,5,6,7,8]
x2 = [3,4,8,2,8,8]
y = [1,2,4,8,1,9]

def L_plot(ax, fontsize=12):
    ax.set_xlabel('x-label', fontsize=8)
    ax.set_ylabel('y-label', fontsize=8)
    ax.set_title('L', fontsize=10) 
    ax.grid(False)
    ax.scatter(x, y)

def E_plot(ax2,pid, fontsize=12):
    ax2.set_xlabel('x-label', fontsize=8)
    ax2.set_ylabel('y-label', fontsize=8)
    ax2.set_title('E', fontsize=10)
    ax2.grid(False)
    ax2 = sns.distplot(x, kde=False, norm_hist=True, color='b', bins = 10)

def D_plot(ax,pid, fontsize=12):
    ax.set_xlabel('x-label', fontsize=8)
    ax.set_ylabel('y-label', fontsize=8)
    ax.set_title('D', fontsize=10)
    ax.grid(False)
    ax = sns.distplot(x2, kde=False, norm_hist=True, color='b', bins = 10)

ax1 = plt.subplot2grid((3,1), (0, 0))  
ax2 = plt.subplot2grid((3,1), (1, 0))
ax3 = plt.subplot2grid((3,1), (2, 0))

L_plot(ax1,1)
E_plot(ax2,1)
D_plot(ax3,1)

plt.tight_layout()

plt.show()

我正在尝试将E_plot 分配给第二行中的subplot,但distplot's 都位于最后一个创建的subplot 中。

不知道是无法分配seaboard package还是分配不正确?

【问题讨论】:

    标签: python matplotlib seaborn subplot


    【解决方案1】:

    distplot 的调用签名是:

    seaborn.distplot(a, bins=None, hist=True, kde=True, rug=False,
                     fit=None, hist_kws=None, kde_kws=None, rug_kws=None, 
                     fit_kws=None, color=None, vertical=False,
                     norm_hist=False, axlabel=None, label=None,
                     ax=None)
    

    注意最后一个选项。如果您不告诉它使用哪个 Axes 对象,它将使用 pyplot.gca() (gca = "get current Axes") 返回的那个。

    所以你需要做,例如,

    sns.distplot(x2, kde=False, norm_hist=True, color='b', bins=10, ax=ax2)
    

    【讨论】:

      猜你喜欢
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 2014-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多