if 语句中不显示绘图

问题描述 投票:0回答:1

我正在尝试根据特定条件创建 2 个不同的图。 从我上传的文本中获取的条件定义了如何过滤数据。有两种过滤选项:按年龄或按性别。当 if 语句为 true 时,应保存每个图表。

这是代码:

    idc_list = list(conditions[4].split(","))
    new_data = df[df['ICD9_code'].isin(idc_list)]
    print(new_data.head)

    if conditions[2] == 1:
      new_data = new_data[['age','Death']]
      ranges = [0,30,60,90,120]
      group = new_data.groupby(pd.cut(new_data.age, ranges)).Death.agg('count')
      group.plot(x='age', y='Death', kind='bar')
      plt.title("Death vs Age")
      plt.xlabel('Age',fontsize=10)
      plt.ylabel('Numbers of Death',fontsize=10)
      plt.show()
      plt.savefig(plt.savefig('{}.png'.format("Result")))


   if conditions[3] == 1:
     new_data = new_data[['gender_x', 'Death']]
     group = df.groupby('gender_x').Death.agg('count')
     group.plot(x='gender_x', y='Death', kind='bar')
     plt.title("Death vs Gender")
     plt.xlabel('Gender',fontsize=10)
     plt.ylabel('Numbers of Death',fontsize=10)
     plt.show()
     plt.savefig("Results_Gender")

我想为每个条件创建 2 个不同的图并保存。 当我运行它时,它不显示绘图也不保存它。 我该如何解决?由于某种原因我无法成功保存剧情。

python python-3.x matplotlib if-statement plot
1个回答
0
投票

在调用显示方法之前,您需要保存数字。如文档

中所述

如果您想要图像文件以及用户界面窗口,请在 pyplot.show 之前使用 pyplot.savefig。在(阻塞) show() 结束时,图形被关闭,因此从 pyplot 中取消注册。之后调用 pyplot.savefig 将保存一个新的空图形。

所有这些都搁置了明显的拼写错误,例如嵌套

plt.save_fig()
的使用以及将 new_data 分配给第一个 if 语句中的列子集(即“age”和“Death”),从而删除了第二个 if 语句所需的其他列块。

© www.soinside.com 2019 - 2024. All rights reserved.