g = sns.FacetGrid(unpaid, col="下单入口", hue="短信催款次数", sharex=True, sharey=True, col_wrap=2, palette="husl", height=6, aspect=1.5)有两列图,如何把plt.axvline(x=2, color='r', linestyle='--')放进两列图里
时间: 2024-03-19 09:44:31 浏览: 146
外贸跟单员考试《基础理论》强化训练(十一)_1.docx
你可以使用 FacetGrid 对象的 `map()` 方法来对每个子图进行绘制。因此,你可以将 `plt.axvline()` 包装成一个函数,然后使用 `map()` 方法将这个函数映射到 FacetGrid 对象的每个子图上。
具体实现方法如下:
```python
import matplotlib.pyplot as plt
import seaborn as sns
# 定义绘制垂直线的函数
def draw_vline(x, color='r', linestyle='--'):
plt.axvline(x=x, color=color, linestyle=linestyle)
g = sns.FacetGrid(unpaid, col="下单入口", hue="短信催款次数", sharex=True, sharey=True, col_wrap=2, palette="husl", height=6, aspect=1.5)
g.map(plt.scatter, "逾期", '需付金额', alpha=0.7, s=30)
# 对每个子图绘制垂直线
g.map(draw_vline, "下单入口", x=2, color='r', linestyle='--')
g.map(draw_vline, "下单入口", x=9, color='r', linestyle='--')
g.map(draw_vline, "下单入口", x=16, color='r', linestyle='--')
g.add_legend()
```
在这个例子中,我们定义了一个名为 `draw_vline()` 的函数,用于在子图中绘制垂直线。然后,我们使用 `map()` 方法将这个函数映射到 FacetGrid 对象的每个子图上,同时传入需要绘制垂直线的位置 `x` 和其他参数。最后,我们调用 `add_legend()` 方法添加图例。
阅读全文