首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Subplot函数不显示所有子图

Subplot函数不显示所有子图
EN

Stack Overflow用户
提问于 2018-07-20 04:34:04
回答 2查看 46关注 0票数 0

我一直在尝试将我的绘图转换成函数,这样我就可以重用它们。现在,我正在尝试绘制子图,每个子图绘制一个类别随时间变化的销售额。在它的循环形式中,它看起来像这样:

代码语言:javascript
复制
Categories=dfs['Category'].unique()
fig, ax=plt.subplots(figsize=(18,10))

for j,i in zip(Equipos,range(len(Equipos))):
    df0=dfs.loc[dfs['Category']==j]
    df_aux=df0.groupby(['Date'], as_index=False).sum()
    plt.subplot(3,5,i+1)
    plt.plot( df_aux['Date'], df_aux['Sales'])

plt.show()

Category有14个值,所以这将带来一个3x5的网格,在最后一个单元格中没有图形。但是当我把它变成这样的函数时:

代码语言:javascript
复制
def subplots_category(cat,measure,df=dfs,w=18,h=10):
    fig, ax=plt.subplots(figsize=(18,10))

    for j,i in zip(df[cat].unique(),range(len(cat))):
        df0=dfs.loc[dfs[cat]==j]
        df_aux=df0.groupby(['Date'], as_index=False).sum()
        plt.subplot(3,5,i+1)
        plt.plot( df_aux['Date'], df_aux[measure])

    plt.show()

然后输入:

代码语言:javascript
复制
subplots_category('Category','Sales')

我得到了一个2x5的网格,最后一个没有出现(9个图)。知道会发生什么吗?(简化和翻译的实际代码,所以,如果需要,我可以张贴实际代码)提前感谢!

编辑:在删除NaNs后,该函数尊重子图网格,但我得到的图形仍然比预期的要少。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-20 06:55:38

字符串'Category'有8个字符。你遍历这个字符串的长度,因此得到8个子图。

我猜,相反,您希望循环遍历所有独特的类别。

代码语言:javascript
复制
for i, j in enumerate(df[cat].unique()):
票数 1
EN

Stack Overflow用户

发布于 2018-07-20 04:48:44

如果非要我猜的话,它是基于你的变量i的最小值,这个最小值是0吗?如果不是,则从偏移位置开始绘制子图。如果i的最小值是1,那么您的第一个子图将如下所示

代码语言:javascript
复制
subplot(3,5,2)

并且在所分配的第二子图网格空间而不是所需的第一子图网格空间。另外,检查i的最大值是多少。如果您有效地显示了10 (9,1为空),那么您的i值可能不会迭代到您期望的值,从而获得15个图(14,1为空)。我遇到过类似的情况,在迭代时检查i的值对我很有帮助。希望这能有所帮助!

编辑:我应该注意,检查j的值也会很有帮助。

(这也是我对一个问题的第一个回答,所以如果答案格式很奇怪,那么我道歉)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51431282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档