首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >线条图不显示轴上的所有日期

线条图不显示轴上的所有日期
EN

Stack Overflow用户
提问于 2019-01-15 01:05:22
回答 2查看 9.3K关注 0票数 3

我有以下几点:

代码语言:javascript
运行
复制
fig, ax = plt.subplots(figsize=(40, 10))
sns.lineplot(x="Date", y="KFQ imports", data=df_dry, color="BLACK", ax=ax)
sns.lineplot(x="Date", y="QRR imports", data=df_dry, color="RED",ax=ax)

ax.set(xlabel="Date", ylabel="Value", )
x_dates = df_dry['Date'].dt.strftime('%b-%Y')
ax.set_xticklabels(labels=x_dates, rotation=45)

结果

当我使用条形图(sns.barplot)时,会显示整个日期范围。我是不是在折线图上漏掉了什么?我

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-15 02:11:14

其想法是将xtick设置为与数据帧中的日期完全一致。为此,您可以使用set_xticks(df.Date.values)。然后,使用日期的自定义格式化程序可能会更好,这将允许以您想要的方式格式化它们。

代码语言:javascript
运行
复制
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import dates
import seaborn as sns

df = pd.DataFrame({"Date" : ["2018-01-22", "2018-04-04", "2018-12-06"],
                   "val"  : [1,2,3]})
df.Date = pd.to_datetime(df.Date)


ax = sns.lineplot(data=df, x="Date", y="val", marker="o")
ax.set(xticks=df.Date.values)
ax.xaxis.set_major_formatter(dates.DateFormatter("%d-%b-%Y"))
plt.show()

请注意如何在不进行海运的情况下实现相同的目标,如下所示

代码语言:javascript
运行
复制
ax = df.set_index("Date").plot(x_compat=True, marker="o")
ax.set(xticks=df.Date.values)
ax.xaxis.set_major_formatter(dates.DateFormatter("%d-%b-%Y"))
plt.show()
票数 11
EN

Stack Overflow用户

发布于 2021-09-16 10:38:59

避免Seaborn中日期标记稀疏的一种方法是将日期列转换为字符串值。

代码语言:javascript
运行
复制
df['dates_str'] = df.dates.astype(str)

使用新列作为x轴进行绘图将显示所有日期。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54186083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档