将图形分配给正确的子图
Assign figure to correct subplot
我有一组显示不同信息的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包裹无法分配还是我分配不正确?
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)
我有一组显示不同信息的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包裹无法分配还是我分配不正确?
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)