Seaborn - 添加色调时时间序列换行

Posted

技术标签:

【中文标题】Seaborn - 添加色调时时间序列换行【英文标题】:Seaborn - Timeseries line breaks when hue is added 【发布时间】:2022-01-15 07:29:25 【问题描述】:

我无法使用 seaborn 绘制时间序列图。通过将hue 添加到情节中,时间序列情节会中断。我无法弄清楚为什么时间序列图会在两者之间中断以及如何阻止日期重叠。

复制问题的代码如下:

test_data = 'Date':['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-06', '2021-01-08', '2021-01-09'],
             'Price':[20, 10, 30, 40, 25, 23, 56],
             'Kind': ['Pre', 'Pre', 'Pre', 'Pre', 'Current', 'Post', 'Post']
test_df = pd.DataFrame(test_data)
test_df['Date'] = pd.to_datetime(test_df['Date'])
sns.lineplot(data=test_df, x="Date", y="Price", hue='Kind')

如何解决换行和日期重叠的问题?

【问题讨论】:

你能描述一下你期望的输出吗?三个“种类”类别的日期不相交,“当前”类别只有一个点,其中线图没有意义 【参考方案1】:

尝试添加stylemarkers 参数来处理带有“Kind”==“Current”的孤立点:

import seaborn as sns
import matplotlib.pyplot as plt

fig = plt.figure()
sns.lineplot(data=test_df, x="Date", y="Price", style='Kind', markers=['o', 'o', 'o'], hue='Kind')
fig.autofmt_xdate()

显示情节:

【讨论】:

你能告诉我如何修复x轴上的重叠日期吗? 使用plt.xticks(rotation=45)(或尝试rotation=90)旋转轴标签 更新:添加代码以修复每个 ***.com/questions/6705581/… 的 xaxis 标签

以上是关于Seaborn - 添加色调时时间序列换行的主要内容,如果未能解决你的问题,请参考以下文章

使用 seaborn 绘图时,如何为色调参数指定多个变量?

如何手动缩放 Seaborn Violinplot 的计数

如何在 Seaborn 图中设置色调顺序

绘制具有多个属性的图形,类似于 Seaborn 中的“色调”

Seaborn FacetGrid 条形图和色调

使用色调参数在seaborn中分割小提琴图