0

我很难让 pandas.tools.rplots 标记我的轴。这是一个最小的例子:

 import pandas as pd
 import pandas.tools.rplot as rplot
 import numpy as np
 import matplotlib.pyplot as plt

 sitecodes = ['A'] * 10 + ['B'] * 10 + ['C'] * 10
 altitude = np.random.rand(len(sitecodes)) * 1000
 obs = np.random.rand(len(sitecodes))

 df = pd.DataFrame({'sitecodes':sitecodes,
                    'altitude':altitude,
                    'obs':obs})

 plt.figure()
 plot = rplot.RPlot(df, x='altitude', y='obs')
 plot.add(rplot.TrellisGrid(['sitecodes', '.']))
 plot.add(rplot.GeomScatter())
 discard = plot.render()
 plt.show()

http://pandas.pydata.org/pandas-docs/stable/visualization.html#trellis-plotting-interface中的一些示例具有轴标签,而有些则没有;在我上面的例子中,我没有。我找不到将它们添加到我可以找到的文档中的方法,也找不到在 rplot.RPlot 返回的绘图对象内四处寻找的方法。

肯定有一种方法来标记轴吗?

4

1 回答 1

0

这可能是一个错误或“正在进行的工作”......

plt.show()但是,如果在您添加此代码之前的代码末尾:

for i, a in enumerate(plt.gcf().axes):
    if a.get_xticks().any():
        plt.setp(a, xlabel='altitude')
    if i == 1:
        plt.setp(a, ylabel='obs')
plt.show()

它将 X 标签添加到底部 Axe,Y 标签添加到中间 Axe。

这确实不是一个通用的解决方案,如果格子图的 x、y 维度不同,则需要进行调整。

编辑:

一个通用的解决方案是在 中添加一个TextFigure可以这样完成:而不是你discard = plot.render()使用这个代码:

fig = plt.gcf()
fig.text(s='altitude', x=0.5, y=0, ha='center')
fig.text(s='obs', x=0, y=0.5, va='center', rotation='vertical')
discard = plot.render(fig)

无论图中使用的轴数如何,这都应该有效。

于 2014-10-25T09:48:13.077 回答