【发布时间】:2015-09-07 18:57:48
【问题描述】:
我正在尝试从具有不同 x 和 y 范围的数据集中绘制 2 个单独的图表。我对 plt.figure、plt.subplot 和 plt.axes 之间的交互感到困惑。
假设我正在尝试绘制代表不同特征(以字母 A - G 为特征的贷款)的不同贷款条款('term')的值(“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.figure时,它会创建一个新图形。更有可能的是,您想致电plt.subplot。第一个调用应该类似于plt.subplot(1, 2, 1),第二个调用应该类似于plt.subplot(1, 2, 2)(参数是:nrows、ncols、plot_number)。 -
@askewchan - 谢谢,我之前尝试过,结果更好,但绘图使用了相同的 X 轴。不知道如何解决这个问题。我发现 MATPLOTLIB 非常令人困惑。
-
哈哈,是的,matplotlib 是非常令人困惑,但它是我们在 python 中最好的(据我所知)。如果您可以制作一个不依赖于您的数据的示例(您可以使其随机),人们可以提供更多帮助。现在我不确定你所说的“相同的 X 轴”是什么意思。
-
@askewchan - 谢谢。 “相同的 X 轴”是指相互绘制的图,只有底部图有一个标记轴,用于拟合两个系列。我很难制作一个随机数据集,但是如果我告诉你 x 轴是一系列日期(格式为 MMYYYY),并且 term value = 36 的日期是从 2007 年到 2012 年,而日期为term value =60 是从 2010 年到 2012 年,这有帮助吗?新手很难快速发明一个说明这个问题的数据集!
标签: python matplotlib