在两个不同的函数中对两个图形进行子图绘图matplotlib

时间:2018-12-15 17:40:09

标签: python matplotlib plot jupyter-notebook subplot

我在任何地方都找不到如何用不同的函数绘制两个图的子图。谁能帮我吗?我使用Jupyter Notebook。

第一个功能:

def OccurrenciesPlotting(filtered_sent):
    fdist = FreqDist(filtered_sent)      
    fdist.plot(40,cumulative=False)

第二个功能:

def MyWordCloud(filtered_sent):
    img  = np.array(Image.open("H....jpg")) 
    stopwords = set(STOPWORDS)
    .
    .
    .

    image_colors = ImageColorGenerator(img)

    plt.figure()
    plt.imshow(wordcloud.recolor(color_func=image_colors),
               interpolation="bilinear")
    plt.axis("off")
    plt.savefig('wordcloud.png', format="png")
    plt.show()

我希望函数的结果一个接一个

非常感谢:)

1 个答案:

答案 0 :(得分:0)

要绘制子图,必须使用plt.subplots()函数。然后,您的图形就是包含两个子图的图,每个子图都位于一个轴对象上。 由于您的代码不可复制,因为我们缺少数据,因此我无法为您提供完整的代码。 通常,应传递要在其上绘制函数的轴以作为参数传递。     将熊猫作为pd导入     导入matplotlib.pyplot作为plt

df = pd.DataFrame({"a":[1,2,3], "b": [2,3,4]})

def f1(df, axis):
    return df["a"].plot(ax = axis)

def f2(df, axis):
    axis = plt.plot(df["b"], c = "g")
    return axis

fig, axes = plt.subplots(nrows =1, ncols = 2)
f1(df, axes[0])
axes[1] = f2(df, axes[1])
plt.show()

如您所见,在使用pandas绘图函数和matplotlibs函数时,必须使用稍微不同的方法。您可以使用ax参数将所需的轴传递到df.plot()。为了使用常规的matplotlib库,我从函数中返回了一个轴对象。