我很难让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返回的绘图对象内部进行探索。
当然有一种标记轴的方法吗?
答案 0 :(得分: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 Label添加到底部Ax,将Y Label添加到中间轴。
这确实是不一个通用解决方案,如果Trellis图的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)
无论图中使用的轴数是多少,这都应该有效。