我正在尝试使用并行循环创建一些内核图。当我使用条形图时循环工作,但是当我使用内核图时出错。我是python的新手,所以我想我错过了一些非常明显的东西 - 有什么建议吗?谢谢!
哦和len(schools) = 3
#the kernel plot
fig = plt.figure(facecolor='white')
gs1 = GridSpec(1,len(schools))
sp1 = [plt.subplot(gs1[0,i]) for i in range(len(schools))]
colors = ["red", "blue", "green"]
schools2 = [[data1....],[data2....],[data3......]]
for ax, i in zip(sp1, range(len(schools))):
ax = sns.kdeplot(schools2[i], bw=.5, color = colors[i], lw=1.8, vertical=True, alpha=.5)
#the bar plot
fig = plt.figure(facecolor='white')
gs1 = GridSpec(1,len(schools))
sp1 = [plt.subplot(gs1[0,i]) for i in range(len(schools))]
colors = ["red", "blue", "green"]
test = [1,2,3]
for ax, i in zip(sp1, range(3)):
ax.bar(1, test[i], color = colors[i])
答案 0 :(得分:1)
为了直接使用matplotlib绘图功能,做到这一点之间存在差异,例如: plt.bar(...)
和ax.bar(...)
。在前一种情况下,情节将绘制在"当前有效的"轴,而后一种情况下,绘图将始终进入绑定到ax
变量的轴。
类似地,如果你只是写一下seaborn绘图功能,例如sns.kdeplot(...)
,它将绘制到"当前有效的"轴。为了使用matplotlib面向对象的接口来控制绘图的最终位置,大多数[1] seaborn函数采用ax
参数,您将Axes对象传递给它:sns.kdeplot(..., ax=ax)
。
kdeplot
,violinplot
等函数与绘制到特定Axes的许多其他函数之间存在区别,而lmplot
等{{1}更复杂的函数等全部图形函数,不能分配给特定的轴或图。任何前一个函数都将采用factorplot
参数。