matplotlib Matplolib图在X轴上的日期格式为xxxx-xx-xx 00:00:00,如何更改为xxxx-xx-xx?

3duebb1j  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(115)

我正在使用JupyterLab,我试图制作一个matplotlib图,值计数(y轴),并在x轴上添加设备引入的年份为xxxx-xx-xx 00:00:00。有趣的是,包含数据的列以xxxx-xx-xx检索,而数据列的类型为:datetime64[ns]。我想让图形只显示xxxx-xx-xx(即只显示日期而不显示时间)。我该怎么办?我采取的一种替代方法是将数据类型从datetime64[ns]更改为string。在本例中,图表显示的是日期fine(xxxx-xx-xx),然而,matplotlib还在x轴上绘制了所有的NaT,它的值计数比任何其他真实的日期都要大。

# I change the data types, I tried to remove the NaT:
ndf_dropped_rows = ndf.dropna()
ndf['opening_date_clean'].value_counts()

# I also tried 
ndf_dropped_rows = ndf.dropna()
ndf['opening_date_clean'].value_counts() #but I get the following table:
NaT           250
1999-01-01     10
2022-01-01      8
1985-01-01      7
1976-01-01      7
             ... 
1996-05-16      1
1996-04-30      1
1996-04-29      1
1996-06-10      1
2022-02-01      1
Name: opening_date_clean, Length: 603, dtype: int64

字符串
所以基本上NaT还在。

tzxcd3kk

tzxcd3kk1#

Matplotlib提供了3种日期格式化程序:AutoDateFormatterConciseDateFormatterDateFormatterhttps://matplotlib.org/stable/api/dates_api.html)。
前两个会根据可用数据和画布大小自动找出表示日期时间数据的最佳格式。但是,我们可以使用matplotlib.dates.DateFormatter(fmt, tz=None, *, usetex=None)来修改tick。
你可以试试这个:

import matplotlib.pyplot as plt
import matplotlib.dates as mdates   # We use DateFormatter here
import pandas as pd
import numpy as np

df = pd.DataFrame({
    'date': pd.date_range(start='1/1/2020', periods=100),
    'value': np.random.randn(100).cumsum()
})

fig, ax = plt.subplots()

ax.plot(df['date'], df['value'])

# Use set_major_formatter and matplotlib.dates.DateFormatter to 
# format the x-axis to show only the date
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))

# Rotate date labels automatically
fig.autofmt_xdate()

plt.show()

字符串


的数据

相关问题