Python 带有pandas.tools.rplots的网格打印:轴标签
我很难让pandas.tools.rplots标记我的轴。下面是一个简单的例子:Python 带有pandas.tools.rplots的网格打印:轴标签,python,pandas,trellis,Python,Pandas,Trellis,我很难让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)) * 100
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()
中的一些示例具有轴标签,而有些则没有;在我上面的例子中,我不这么认为。我找不到在我能找到的文档中添加它们的方法,也找不到在rplot.rplot返回的plot对象中四处搜索的方法
肯定有办法标记轴吗?这可能是一个错误或正在进行的工作 但是,如果在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标签添加到底部轴,将Y标签添加到中间轴
这确实不是一个通用的解决方案,如果网格图的x、y维度不同,则需要进行调整
编辑:
一个通用的解决方案是在图中添加一个文本,可以这样做:
使用以下代码代替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)
无论绘图中使用了多少轴,这都应该有效。如果您正在使用熊猫原生网格绘图,我建议您看看mwaskom的超级软件包。它可以做网格图和更多的东西。请注意,熊猫的这个rplots子模块并没有被积极开发,它很可能会被弃用。事实上,你可以看看或@b10,我也在几篇博客文章中看到了seaborn的推荐。我希望只使用我已经安装的东西,但我会检查它。@joris,谢谢-我浏览了讨论,知道它很有用。