- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从具有不同 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)
当前迭代的屏幕和文件输出将第一个图(术语 ==36)的大小比第二个小得多。我想通过定义 2 个具有相同无花果大小的独立图形,我可以摆脱这种情况吗?
在此先感谢您的帮助!
最佳答案
图形基本上就是一个窗口。该窗口可以有一个或多个轴,其中每个轴都是一个图。 plt.subplot
可让您在图中创建多个轴。图形和坐标轴都是对象,都有自己的方法。例如,plt.plot
只是 axes
对象的 plot
方法的包装器。
在您的情况下,您不想调用这些目录中的任何一个。相反,您应该调用 plt.subplots()
(注意末尾的“s”)。这是一个方便的函数,它将创建一个图形,在该图形中放置一个多个轴,然后返回图形和所有轴。然后,您可以将坐标轴传递给 pandas plot
函数,以强制它在该坐标轴上绘图。您还可以为该轴调用设置 legend
和 title
,但在 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()
关于python - 两张图,两条轴,一张图……难倒了。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32444626/
原文:https://juejin.cn/post/7023643374569816095 本文图解 Git 中的最常用命令。如果你稍微理解 Git 的工作原理,这篇文章能够让你理解的更透彻。 基本用
作者:小林coding 计算机八股文网站:https://xiaolincoding.com/ 大家好,我是小林。 从这篇「执行一条 SQL 查询语句,期间发生了什么?」中,我们知道了一条查询语句经历
我是一名优秀的程序员,十分优秀!