【问题标题】:How do I plot multiple graphs using matplotlib?如何使用 matplotlib 绘制多个图形?
【发布时间】:2019-08-03 14:05:11
【问题描述】:

我正在对主要使用seaborn 的数据集进行一些EDA。但是,我想在单个内核中绘制这些图。我想我打算使用matplotlib 来实现这一点。我已经完成了 3 个单独的 sns.countplot 图表,但我试图在一个内核/输出中显示它们。

我已尝试使用以下代码,但仍不能完全确定它是如何工作的:

fig, axes = plt.subplots(1, 3, figsize=(16,8))

ax = sns.countplot(y = 'loan_status', data = df, order = df['loan_status'].value_counts().iloc[:6].index)

ax = sns.countplot(y = 'loan_status', data = df, order = df['loan_status'].value_counts().iloc[2:9].index)

ax = sns.distplot(df['loan_amnt'], bins=50)

【问题讨论】:

  • 请为您尝试制作的绘图添加最少的代码,以便发布者更容易测试您的问题。
  • 注意,如果您只想要三个图,那么您可以使用fig, axes = plt.subplots(1, 3, figsize=(16,8))fig, axes = plt.subplots(3, 1, figsize=(16,8)),具体取决于您希望它们分别水平还是垂直布局。同样,拥有您想要绘制的代码在这里会很有帮助。
  • 抱歉没有贴出代码,我刚刚添加了
  • 好的。那么,您的代码是否正常工作,您只想知道它是如何工作的,还是根本不工作?您是否包含了plt.show() 命令?

标签: python matplotlib


【解决方案1】:

你的意思是这样的吗?

这是一个简单的例子:

import numpy as np
import matplotlib.pyplot as plt

# Some random data to plot
M = np.random.rand(3,100,100)

fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(16,8))

for i, ax in enumerate(axes.flatten()):
    ax.imshow(M[i])

# OR
# axes[0].imshow(M[0])
# axes[1].imshow(M[1])
# axes[2].imshow(M[2])

plt.show()

【讨论】:

    【解决方案2】:

    试试这个。

    fig, [ax1, ax2, ax3] = plt.subplots(1, 3, figsize=(16,8))
    
         ax1 = sns.countplot(y = 'loan_status', data = df, order = df['loan_status'].value_counts().iloc[:6].index)
    
         ax2 = sns.countplot(y = 'loan_status', data = df, order = df['loan_status'].value_counts().iloc[2:9].index)
    
         ax3 = sns.distplot(df['loan_amnt'], bins=50)
    
    fig.tight_layout()
    
    plt.show()
    

    【讨论】:

    • 没问题。请记住通过标记对您的问题最有帮助的解决方案来参与社区。​​span>
    猜你喜欢
    • 2023-01-20
    • 2019-09-28
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 2015-04-24
    • 2014-06-21
    相关资源
    最近更新 更多