我想创建一个 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)
您是否检查过您感兴趣的“日期”列实际上是一个日期对象?默认情况下,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()