我正在尝试在Seaborn FaceGrid中对两条线之间的区域进行着色。fill_between
方法可以做到这一点,但是我需要访问每个子批中每一行的值来传递它们。在
我的代码是:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
data = [{'Change': 0.0, 'Language': 'Algonquin', 'Type': 'Mother tongue', 'Year': '2011'}, {'Change': 0.0, 'Language': 'Algonquin', 'Type': 'Spoken at home', 'Year': '2011'}, {'Change': -21.32, 'Language': 'Algonquin', 'Type': 'Mother tongue', 'Year': '2016'}, {'Change': -34.84, 'Language': 'Algonquin', 'Type': 'Spoken at home', 'Year': '2016'}, {'Change': 0.0, 'Language': 'Atikamekw', 'Type': 'Mother tongue', 'Year': '2011'}, {'Change': 0.0, 'Language': 'Atikamekw', 'Type': 'Spoken at home', 'Year': '2011'}, {'Change': 5.41, 'Language': 'Atikamekw', 'Type': 'Mother tongue', 'Year': '2016'}, {'Change': 19.15, 'Language': 'Atikamekw', 'Type': 'Spoken at home', 'Year': '2016'}, {'Change': 0.0, 'Language': 'Blackfoot', 'Type': 'Mother tongue', 'Year': '2011'}, {'Change': 0.0, 'Language': 'Blackfoot', 'Type': 'Spoken at home', 'Year': '2011'}, {'Change': -1.4, 'Language': 'Blackfoot', 'Type': 'Mother tongue', 'Year': '2016'}, {'Change': 61.42, 'Language': 'Blackfoot', 'Type': 'Spoken at home', 'Year': '2016'}, {'Change': 0.0, 'Language': 'Carrier', 'Type': 'Mother tongue', 'Year': '2011'}, {'Change': 0.0, 'Language': 'Carrier', 'Type': 'Spoken at home', 'Year': '2011'}, {'Change': -20.38, 'Language': 'Carrier', 'Type': 'Mother tongue', 'Year': '2016'}, {'Change': -18.91, 'Language': 'Carrier', 'Type': 'Spoken at home', 'Year': '2016'}, {'Change': 0.0, 'Language': 'Chilcotin', 'Type': 'Mother tongue', 'Year': '2011'}, {'Change': 0.0, 'Language': 'Chilcotin', 'Type': 'Spoken at home', 'Year': '2011'}, {'Change': -13.82, 'Language': 'Chilcotin', 'Type': 'Mother tongue', 'Year': '2016'}, {'Change': 7.41, 'Language': 'Chilcotin', 'Type': 'Spoken at home', 'Year': '2016'}, {'Change': 0.0, 'Language': 'Cree languages', 'Type': 'Mother tongue', 'Year': '2011'}, {'Change': 0.0, 'Language': 'Cree languages', 'Type': 'Spoken at home', 'Year': '2011'}, {'Change': -11.52, 'Language': 'Cree languages', 'Type': 'Mother tongue', 'Year': '2016'}, {'Change': 6.57, 'Language': 'Cree languages', 'Type': 'Spoken at home', 'Year': '2016'}]
langs = pd.DataFrame(data)
g = sns.FacetGrid(langs, col='Language', hue='Type', col_wrap = 4, size=2)
g.map(plt.plot, 'Year', 'Change').set_titles('{col_name}')
g.set(xticks=[2011, 2016], yticks = [-40, 0, 70] )
现在如何访问每行的值?我猜是用g.axes
来猜的,但是文档中没有任何东西能帮上忙。在
FacetGrid的平面轴数组,然后通过
ax.lines
获取轴对象的所有行。使用get_xdata, get_ydata
的调用迭代这些行,以请求某行的数据,而不是对这些数据执行所需的操作。 样本代码:代码数据的输出:
^{pr2}$在@Serenity's上扩展。使用行信息
get_xdata, get_ydata
您可以使用fill_between
之类的相关问题 更多 >
编程相关推荐