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 ラベルを下の Ax に、Y ラベルを中央の Axe に追加します。

これは確かに普遍的な解決策ではなく、トレリス プロットの x と y の次元が異なる場合は調整する必要があります。

編集:

普遍的な解決策は、 に を追加するTextことFigureです。これは、次のように実行できます: 代わりに、次の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 に答える