热门标签 | 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()


推荐阅读
  • 【图像分类实战】利用DenseNet在PyTorch中实现秃头识别
    本文详细介绍了如何使用DenseNet模型在PyTorch框架下实现秃头识别。首先,文章概述了项目所需的库和全局参数设置。接着,对图像进行预处理并读取数据集。随后,构建并配置DenseNet模型,设置训练和验证流程。最后,通过测试阶段验证模型性能,并提供了完整的代码实现。本文不仅涵盖了技术细节,还提供了实用的操作指南,适合初学者和有经验的研究人员参考。 ... [详细]
  • 本文探讨了利用Python实现高效语音识别技术的方法。通过使用先进的语音处理库和算法,本文详细介绍了如何构建一个准确且高效的语音识别系统。提供的代码示例和实验结果展示了该方法在实际应用中的优越性能。相关文件可从以下链接下载:链接:https://pan.baidu.com/s/1RWNVHuXMQleOrEi5vig_bQ,提取码:p57s。 ... [详细]
  • Python 序列图分割与可视化编程入门教程
    本文介绍了如何使用 Python 进行序列图的快速分割与可视化。通过一个实际案例,详细展示了从需求分析到代码实现的全过程。具体包括如何读取序列图数据、应用分割算法以及利用可视化库生成直观的图表,帮助非编程背景的用户也能轻松上手。 ... [详细]
  • Visual Studio Code (VSCode) 是一款功能强大的源代码编辑器,支持多种编程语言,具备丰富的扩展生态。本文将详细介绍如何在 macOS 上安装、配置并使用 VSCode。 ... [详细]
  • 使用多项式拟合分析淘宝双11销售趋势
    根据天猫官方数据,2019年双11成交额达到2684亿元,再次刷新历史记录。本文通过多项式拟合方法,分析并预测未来几年的销售趋势。 ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • 本文详细介绍了如何在 Python 中忽略警告和错误,提供了多种实现方法,并解释了其背后的原理。对于希望提高代码健壮性和可读性的开发者来说,这些方法非常实用。 ... [详细]
  • 本文介绍了如何利用 `matplotlib` 库中的 `FuncAnimation` 类将 Python 中的动态图像保存为视频文件。通过详细解释 `FuncAnimation` 类的参数和方法,文章提供了多种实用技巧,帮助用户高效地生成高质量的动态图像视频。此外,还探讨了不同视频编码器的选择及其对输出文件质量的影响,为读者提供了全面的技术指导。 ... [详细]
  • 本文介绍了如何使用Python的Paramiko库批量更新多台服务器的登录密码。通过示例代码展示了具体实现方法,确保了操作的高效性和安全性。Paramiko库提供了强大的SSH2协议支持,使得远程服务器管理变得更加便捷。此外,文章还详细说明了代码的各个部分,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
    在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
  • 通过使用 `pandas` 库中的 `scatter_matrix` 函数,可以有效地绘制出多个特征之间的两两关系。该函数不仅能够生成散点图矩阵,还能通过参数如 `frame`、`alpha`、`c`、`figsize` 和 `ax` 等进行自定义设置,以满足不同的可视化需求。此外,`diagonal` 参数允许用户选择对角线上的图表类型,例如直方图或密度图,从而提供更多的数据洞察。 ... [详细]
  • 在Java项目中,当两个文件进行互相调用时出现了函数错误。具体问题出现在 `MainFrame.java` 文件中,该文件位于 `cn.javass.bookmgr` 包下,并且导入了 `java.awt.BorderLayout` 和 `java.awt.Event` 等相关类。为了确保项目的正常运行,请求提供专业的解决方案,以解决函数调用中的错误。建议从类路径、依赖关系和方法签名等方面入手,进行全面排查和调试。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • 每年,意甲、德甲、英超和西甲等各大足球联赛的赛程表都是球迷们关注的焦点。本文通过 Python 编程实现了一种生成赛程表的方法,该方法基于蛇形环算法。具体而言,将所有球队排列成两列的环形结构,左侧球队对阵右侧球队,首支队伍固定不动,其余队伍按顺时针方向循环移动,从而确保每场比赛不重复。此算法不仅高效,而且易于实现,为赛程安排提供了可靠的解决方案。 ... [详细]
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社区 版权所有