python - 使用数据框中的列为 seaborn 图的背景着色
问题描述
问题
如何使用数据框的一列对 seaborn 图的背景进行着色或着色?
代码片段
import numpy as np
import seaborn as sns; sns.set()
import matplotlib.pyplot as plt
fmri = sns.load_dataset("fmri")
fmri.sort_values('timepoint',inplace=True)
ax = sns.lineplot(x="timepoint", y="signal", data=fmri)
arr = np.ones(len(fmri))
arr[:300] = 0
arr[600:] = 2
fmri['background'] = arr
ax = sns.lineplot(x="timepoint", y="signal", hue="event", data=fmri)
期望的输出
解决方案
ax.axvspan()
可以为你工作,假设背景不会在时间点上重叠。
import numpy as np
import seaborn as sns; sns.set()
import matplotlib.pyplot as plt
fmri = sns.load_dataset("fmri")
fmri.sort_values('timepoint',inplace=True)
arr = np.ones(len(fmri))
arr[:300] = 0
arr[600:] = 2
fmri['background'] = arr
fmri['background'] = fmri['background'].astype(int).astype(str).map(lambda x: 'C'+x)
ax = sns.lineplot(x="timepoint", y="signal", hue="event", data=fmri)
ranges = fmri.groupby('background')['timepoint'].agg(['min', 'max'])
for i, row in ranges.iterrows():
ax.axvspan(xmin=row['min'], xmax=row['max'], facecolor=i, alpha=0.3)
推荐阅读
- azure - 无法在 azure 中创建 python 函数
- alexa - 显示接口与 APL
- laravel - 在视图上显示数据时尝试获取非对象的属性“column_name”
- asp.net-mvc - 如何将 Asp.net MVC Core 与 Asp.net Identity Core 和 WebAPi Core 一起使用?
- r - 避开ggplot中median_hilow的垂直线
- python - 名称 (?) 未定义
- solr - Apache solr 不仅仅从 Digital Ocean 中的特定 IP 响应
- android - 使用 FileProvider 加载照片导致 java.lang.IllegalArgumentException:无法找到包含的已配置根
- python - 计算机如何获得以下代码中的输出?
- java - 如何使用单个 java 服务从两个不同的表中验证用户