Python 3.x 将ax.twinx()与sns.FacetGrid和sns.lineplot一起使用
我试图在每个刻面图上应用共享的x轴,左y轴上有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]
'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'),那么您将需要为上述情况映射一个处理轴成对的自定义函数
它单独显示线条的图例。有什么建议吗?