热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python两个图,两个轴,一个图…绊倒.

我正在尝试从具有不同x和y范围的数据集中绘制2个单独的图.我对plt.figure,plt.subplot和plt.axes之间的交互感到困惑.假设我试图绘制代表不同贷款条件(“t

我正在尝试从具有不同x和y范围的数据集中绘制2个单独的图.我对plt.figure,plt.subplot和plt.axes之间的交互感到困惑.

假设我试图绘制代表不同贷款条件(“ term”)的不同特征(以字母A-G表示的贷款)的值(“ ROI”)的线.每个贷款期限的“发行日期”范围有所不同(例如,对于期限= 36,贷款自2007年开始发放,对于期限= 60,贷款仅自2011年开始发放).

这是我所拥有的一些伪代码.

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from itertools import groupby
alpha_grades = ('A','B','C','D','E','F','G')
color_scheme = {'A':'b','B':'g','C':'r','D':'c','E':'m','F':'y','G':'k'}
for term in [36,60]:
for grade in alpha_grades:
if ( term == 36 ):
plt.figure(1,figsize=(12,9))
else:
plt.figure(2,figsize=(12,9))
df[(df['grade'] == grade) & (df['term']==term)].groupby(
'issue_date')['ROI'].mean().plot(color=color_scheme[grade],label = ("Grade: %s" % grade))
plt.legend(loc=2)
title = ("%i Mo Lending Rate by Rating" % term)
plt.title(title)

当前迭代的屏幕和文件输出的大小使第一个图形(term == 36)比第二个图形小得多.我以为通过定义2个具有相同无花果大小的独立图形,我可以避免这一点吗?

在此先感谢您的帮助!

解决方法:

图形基本上是一个窗口.该窗口可以具有一个或多个轴,其中每个轴都是图. plt.subplot允许您在图形中创建多个轴.图形和轴都是对象,具有各自的方法.例如,plt.plot只是将对象对象的plot方法包装起来的东西.

在您的情况下,您不想调用这些目录中的任何一个.相反,您应该调用plt.subplots()(在末尾注意“ s”).此便利功能将创建一个图形,在该图形中放置多个轴,然后返回图形和所有轴.然后,您可以将轴传递给pandas绘图功能,以强制其在该轴上绘图.您也可以调用设置图例和该轴的标题,但是在大熊猫中进行设置很容易.

所以这样的事情应该起作用(我也简化了几件事):

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from itertools import groupby
alpha_grades = ('A','B','C','D','E','F','G')
color_scheme = {'A':'b','B':'g','C':'r','D':'c','E':'m','F':'y','G':'k'}
fig1, ax1 = plt.subplots(figsize=(12,9)) # same as plt.subplots(1, 1)
fig2, ax2 = plt.subplots(figsize=(12,9))
for term, ax in zip([36,60], [ax1, ax2]):
ax.hold(True)
for grade, color in color_scheme.items():
df2 = df[(df['grade'] == grade) & (df['term']==term)]
df3 = groupby('issue_date')['ROI'].mean()
df3.plot(ax=ax, color=color,
label=("Grade: %s" % grade))
ax.hold(False)
ax.legend(loc=2)
ax.set_title("%i Mo Lending Rate by Rating" % term)
fig1.show()
fig2.show()

请注意,不是直接使用plt,而是直接与图形和轴进行交互.

如果要将两个图都放在一个图中,则在左侧说一个,在右侧说一个,则可以执行以下操作:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from itertools import groupby
alpha_grades = ('A','B','C','D','E','F','G')
color_scheme = {'A':'b','B':'g','C':'r','D':'c','E':'m','F':'y','G':'k'}
fig, axs = plt.subplots(1, 2, figsize=(12*2,9)) # creates two axes
for term, ax in zip([36,60], axs):
ax.hold(True)
for grade, color in color_scheme.items():
df2 = df[(df['grade'] == grade) & (df['term']==term)]
df3 = groupby('issue_date')['ROI'].mean()
df3.plot(ax=ax, color=color,
label=("Grade: %s" % grade))
ax.hold(False)
ax.legend(loc=2)
ax.set_title("%i Mo Lending Rate by Rating" % term)
fig.show()


推荐阅读
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 本文介绍如何使用 Python 提取和替换 .docx 文件中的图片。.docx 文件本质上是压缩文件,通过解压可以访问其中的图片资源。此外,我们还将探讨使用第三方库 docx 的方法来简化这一过程。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 离线环境下的Python及其第三方库安装指南
    在项目开发中,有时会遇到电脑只能连接内网或完全无法联网的情况。本文将详细介绍如何在这种环境下安装Python及其所需的第三方库,确保开发工作的顺利进行。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
  • 本文详细介绍了Python中文件的基本操作,包括打开、读取、写入和关闭文件的方法,并通过实例展示了如何将Excel文件转换为CSV文件以及进一步转换为HTML文件。此外,还涉及了成绩等级替换的具体实现。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 本文详细介绍如何在VSCode中配置自定义代码片段,使其具备与IDEA相似的代码生成快捷键功能。通过具体的Java和HTML代码片段示例,展示配置步骤及效果。 ... [详细]
author-avatar
夜的泪2502877077
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有