我正在按照seaborn documentation中的示例绘制一些数据的累积分布:
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
sns.set(style="ticks", color_codes=True)
bins = np.arange(0, 65, 5)
tips = sns.load_dataset("tips")
g = sns.FacetGrid(tips, col="day", height=4, aspect=.5)
g = g.map(sns.distplot, "total_bill", bins=bins, hist_kws={"histtype":"stepfilled"})
现在,我想获取与每个bin对应的y值。我怎样才能做到这一点?
关于SO(Get data points from Seaborn distplot)的类似问题建议从绘图轴线使用get_data()
。
我尝试过
for ax in g.axes[:,0]:
lines = ax.get_lines()
我得到lines
是<a list of 0 Line2D objects>
。这意味着没有行可以呼叫get_data()
。
另一个问题(Python Seaborn Distplot Y value corresponding to a given X value)建议使用轴补丁中的get_height()
。
我尝试了
for ax in g.axes[:,0]:
values = [h.get_height() for h in ax.patches]
,我得到一个AttributeError: 'Polygon' object has no attribute 'get_height'
。确实,在get_height
matplotlib API中看不到任何Polygon
方法。
想法?
更新:
经过一番调查,我发现使用参数hist_kws={"histtype":"stepfilled"}
使通过get_height()
从条形获取数据的方式无效。