python 创建子图_python – seaborn在子图中生成单独的图形

问题是factorplot创建了一个新的FacetGrid实例(它反过来创建了自己的图形),它将在其上应用绘图函数(默认情况下为pointplot).因此,如果你想要的只是点图,那么使用pointplot是有意义的,而不是factorplot.

以下是一个黑客,如果你真的想,无论出于什么原因,告诉factorplot Axes执行其绘图.正如@mwaskom在评论中指出的那样,这不是受支持的行为,因此虽然它现在可能有效,但未来可能不会.

你可以使用ax kwarg告诉factorplot在给定的Axes上绘制,它被传递到matplotlib,因此链接的答案可以回答您的查询.但是,由于factorplot调用,它仍将创建第二个数字,但该数字将为空.这里有一个解决方法,它在调用plt.show()之前关闭那个额外的数字

例如:

import matplotlib.pyplot as plt

import pandas

import seaborn as sns

import numpy as np

data = pandas.DataFrame({"x": [1, 2, 4],

"y": [10,20,40],

"s": [10,10,10]}) # I increased your errors so I could see them

# Create a figure instance, and the two subplots

fig = plt.figure()

ax1 = fig.add_subplot(211)

ax2 = fig.add_subplot(212)

# Tell pointplot to plot on ax1 with the ax argument

sns.pointplot(x="x", y="y", data=data, ax=ax1)

# Plot the errorbar directly on ax1

ax1.errorbar(np.arange(len(data["x"])), data["y"], yerr=data["s"])

# Tell the factorplot to plot on ax2 with the ax argument

# Also store the FacetGrid in 'g'

g=sns.factorplot(x="x", y="y", data=data, ax=ax2)

# Close the FacetGrid figure which we don't need (g.fig)

plt.close(g.fig)

plt.show()

你可能感兴趣的:(python,创建子图)