Python 3.x 将ax.twinx()与sns.FacetGrid和sns.lineplot一起使用

Python 3.x 将ax.twinx()与sns.FacetGrid和sns.lineplot一起使用,python-3.x,pandas,matplotlib,seaborn,Python 3.x,Pandas,Matplotlib,Seaborn,我试图在每个刻面图上应用共享的x轴,左y轴上有'total\u bill',右y轴上有'tip'。使用提示数据框进行演示 使用以下数据集tip: import pandas as pd import numpy as np from datetime import datetime, timedelta date_today= datetime.now() days = pd.date_range(date_today, date_today + timedelta(tips.shape[0]

我试图在每个刻面图上应用共享的x轴,左y轴上有
'total\u bill'
,右y轴上有
'tip'
。使用
提示
数据框进行演示

使用以下数据集
tip

import pandas as pd
import numpy as np
from datetime import datetime, timedelta

date_today= datetime.now()
days = pd.date_range(date_today, date_today + timedelta(tips.shape[0]-1), freq='D')
tips = sns.load_dataset("tips")
tips['date'] = days
tips.head()
数据集预览:

import pandas as pd
import numpy as np
from datetime import datetime, timedelta

date_today= datetime.now()
days = pd.date_range(date_today, date_today + timedelta(tips.shape[0]-1), freq='D')
tips = sns.load_dataset("tips")
tips['date'] = days
tips.head()
账单总额 提示 性 吸烟者 白天 时间 大小 日期 0 16.99 1.01 女性 不 太阳 晚餐 2. 2021-01-19 16:39:38.363600 1. 10.34 1.66 男性 不 太阳 晚餐 3. 2021-01-20 16:39:38.363600 2. 21.01 3.5 男性 不 太阳 晚餐 3. 2021-01-21 16:39:38.363600 3. 23.68 3.31 男性 不 太阳 晚餐 2. 2021-01-22 16:39:38.363600 4. 24.59 3.61 女性 不 太阳 晚餐 4. 2021-01-23 16:39:38.363600
您需要创建一个自定义打印功能,用于创建双轴并在此新创建的轴上打印所需的输出:

def twin_线图(x,y,颜色,**kwargs):
ax=plt.twinx()
sns.lineplot(x=x,y=y,color=color,**kwargs,ax=ax)
g=sns.FacetGrid(提示,row='smoker',col='time')
g、 地图(sns.lineplot,'date','tip',color='b')
g、 地图(双线条图,“日期”,“总账单”,颜色为“g”)
g、 图autofmt_xdate()
plt.show()

如果我包含代码
g.add_legend()
并将标签传递给
g.map(sns.lineplot,'date','tip',color='b',label1')和
g.map(twin_lineplot,'date','total_bill',color='g',label2'),那么您将需要为上述情况映射一个处理轴成对的自定义函数
它单独显示线条的图例。有什么建议吗?