Seaborn 线图在 x 轴上显示 1970 年

问题描述 投票:0回答:1

我想创建一个 Seaborn 线图,其中以下(缩短的)数据框作为基础数据(x 轴上的日期,y 轴上的 A 和 B)

日期 A B
2024-08-01 48.06 30.9
2024-08-02 49.06 31.9
2024-08-05 50.06 32.9

当我创建线图时,我在 x 轴上得到了错误的日期(从 1970-01-01 开始,到 1970-01-03 结束。

这里需要什么魔术来显示正确的日期?

一如既往地非常感谢

plot = sns.lineplot(data = df)

format_ymd = mdates.DateFormatter('%Y-%m-%d')
plot.xaxis.set_major_formatter(format_ymd)

plt.xticks(rotation=45)
python seaborn line-plot
1个回答
0
投票

您是否检查过您感兴趣的“日期”列实际上是一个日期对象?默认情况下,Seaborn 和 Matplotlib 可能无法正确解释“日期”列。不过你可以检查一下。

我做了一些改变,这应该没问题。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.dates as mdates

# Sample data
data = {
    'Date': ['2024-08-01', '2024-08-02', '2024-08-05'],
    'A': [48.06, 49.06, 50.06],
    'B': [30.9, 31.9, 32.9]
}

# Create DataFrame
df = pd.DataFrame(data)

# Convert 'Date' to datetime
df['Date'] = pd.to_datetime(df['Date'])

# Plot with Seaborn
plt.figure(figsize=(10, 6))
plot = sns.lineplot(x='Date', y='A', data=df, label='A')
sns.lineplot(x='Date', y='B', data=df, label='B')

# Format the x-axis to show dates correctly
format_ymd = mdates.DateFormatter('%Y-%m-%d')
plot.xaxis.set_major_formatter(format_ymd)

# Rotate x-axis labels for better readability
plt.xticks(rotation=45)

plt.legend()
plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.