2

我是 pandas 和 matplotlib 的新手,但不是 Python 的新手。我有两个问题;一个主要的和一个次要的。

主要:
我有一个熊猫箱线图,x 轴为 FICO 分数,y 轴为利率。我的 x 轴都搞砸了,因为 FICO 分数相互覆盖。由于几个原因,我只想在 x 轴上显示每 4 个或第 5 个刻度标签:

  • 一般来说,它的图表不那么垃圾
  • 在这种情况下,它将允许实际读取标签。

我的代码片段如下:

plt.figure()  
loansmin = pd.read_csv('../datasets/loanf.csv')  
p = loansmin.boxplot('Interest.Rate','FICO.Score')

我保存了返回值,p因为我认为我可能需要进一步操纵我现在所做的情节。

次要:
如何从 pandas boxplot 访问绘图、子图、轴对象。
p上面是一个matplotlib.axes.AxesSubplot对象。
help(matplotlib.axes.AxesSubplot)给出一条消息说:

'AttributeError: 'module' object has no attribute 'AxesSubplot'

dir(matplotlib.axes)列表AxesSubplot并且Subplotbase在该名称空间中,但没有AxesSubplot. 我如何更好地理解这个返回的对象?

4

2 回答 2

2

当我进一步探索时,我发现可以p通过dir(). 这样做我发现了一长串有用的方法,其中包括set_xticklabels. Doinghelp(p.set_xticklabels)提供了一些神秘但仍然有用的帮助——本质上是建议传入一个用于刻度标签的字符串列表。

然后我尝试执行以下操作 - 添加set_xticklabels到上述代码的最后一行的末尾,有效地链接调用。

plt.figure()  
loansmin = pd.read_csv('../datasets/loanf.csv')  
p=loansmin.boxplot('Interest.Rate','FICO.Score').set_xticklabels(['650','','','','','700'])

这给出了预期的结果。我怀疑有一种更好的方法,就像 matplotlib 那样,它允许您显示每个第 n 个标签。但是对于立即使用,这是可行的,并且如果您需要,还允许在出于任何原因不定期设置标签的地方设置标签。

像往常一样,明确地写出问题帮助我找到了答案。如果有人可以帮助我了解底层的 matplotlib 对象,这仍然是一个悬而未决的问题。

于 2013-05-26T01:15:47.463 回答
1

AxesSubplot(我认为)只是获取Axesin matplotlib 的另一种方式。set_xticklabels()是 matplotlib 面向对象接口的一部分(在轴上)。因此,如果您使用的是 pylab 之类的东西,您可能xticks(ticks, labels)ax.set_xticks(ticks)使用ax.set_xticklabels(labels). (对象在哪里axAxes

假设您只想将刻度设置为 650 和 700。您可以执行以下操作:

ticks = labels = [650, 700]
plt.figure()
loansmin = pd.read_csv('../datasets/loanf.csv')
p=loansmin.boxplot('Interest.Rate','FICO.Score')
p.set_xticks(ticks)
p.set_xticklabels(labels)

同样,您可以使用set_xlimandset_ylim来做xlim()ylim()in等价的操作plt

于 2013-05-26T04:19:33.210 回答