gpt4 book ai didi

python - 使用 seaborn pointplot 更改日期格式

转载 作者:行者123 更新时间:2023-12-03 20:51:42 26 4
gpt4 key购买 nike

当我使用 seaborn 绘制点图时,x 轴上的日期更改为这种奇怪的格式 2020-01-06T00:00:00.000000000 .在绘制此图之前,“Current Year Week Ending”列中的日期将转换为 DateTime 对象。我的另一个图(线图)使用类似的输入和格式,但它没有这个问题,日期就像 2020-01-06 .

有谁知道如何解决这个问题?

*total_us数据框和 sub我在图中使用的数据框是同一数据集的子集。我在创建这两个子集之前转换了那个大数据集的日期。因此,total_us 的“本年周结束”列中的值和 sub应该具有相同的 DateTime 格式。

#create a pointplot to capture the variability                             
plt.figure(figsize = (8, 6))
sns.pointplot(x = 'Current Year Week Ending',
y = 'ASP Current Year',
hue ='Type',
data = sub,
markers=["o", "x"],
linestyles=["-", "--"])
plt.xticks(rotation=45, horizontalalignment='right', fontweight='light', fontsize='medium')
plt.ticklabel_format(style='plain', axis='y')

enter image description here
#create a lineplot 
plt.figure(figsize=(10,7))
sns.lineplot(x='Current Year Week Ending',
y='Total Bulk and Bags Units',
hue='Type',
data = total_us);
plt.xticks(rotation=45, horizontalalignment='right', fontweight='light', fontsize='medium')
plt.ticklabel_format(style='plain', axis='y')

enter image description here

这是什么 sub看起来像,所以“本年周结束”列中的值类似于“2020-01-06”。我不知道为什么在绘制点图时它会发生变化。
enter image description here

最佳答案

我认为您的日期列可能只包含这些尾随零,而 seaborn 会根据情节上有多少空间对其进行不同的处理。因此,请为您的日期列尝试以下操作:

sub.iloc[:,1] = sub.iloc[:,1].dt.strftime('Y/%m/%d')
如果由于某种原因不能解决问题(也许 seaborn 点图和线图在幕后做了一些不同的事情),那么可能的解决方法是拆分文本 2020-01-06T00:00:00.000000000在字母 'T' 处,然后去掉尾随的零。我们可以使用 sns.pointplot 的事实返回 matplotlib.Axes对象(来自 documentation ),将变量 ax 设置为等于您的点图:
ax = sns.pointplot(x = 'Current Year Week Ending',                                               
y = 'ASP Current Year',
hue ='Type',
data = sub,
markers=["o", "x"],
linestyles=["-", "--"])
ax.set_xticklabels([date_text.get_text().split("T")[0] for date_text in ax.get_xticklabels()])

关于python - 使用 seaborn pointplot 更改日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62480198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com