import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import matplotlib.markers as markers
from datetime import datetime as dt
df = pd.DataFrame(
{
'date': ['2011-01-01', '2011-02-01', '2012-01-01', '2012-02-01', ],
'amount': [100, 200, 250, 150,],
}
)
df.date = pd.to_datetime(df.date)
df_TotalDay = df[['date','amount']].copy(deep=True)
df_TotalDay = df_TotalDay.groupby('date').amount.sum()
df_TotalDay
fig, ax = plt.subplots(figsize=(15,5))
ax.plot(df_TotalDay.index, df_TotalDay.values)
plt.xticks([x for x in df_TotalDay.index])
plt.show()

在上面的圖中,我只想顯示唯一的年份。在這里,它只是“2011”和“2012”,而不是實際日期。
我試過了
plt.xticks([x for x in df_TotalDay.index.year.unique()])
但這沒有用。
我知道上面的 DataFrame 看起來有點傻,但是我的實際 DataFrame 非常大,當我繪制資料時,它看起來像這樣:

在上圖中,matplotlib 并不是每年都在 x 軸上列出。我想包括丟失的年份。
uj5u.com熱心網友回復:
你很親密。您應該生成所有要顯示的日期,然后添加到 xticks:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(
{
'date': ['2011-01-01', '2013-02-01', '2016-01-01', '2018-02-01', ],
'amount': [100, 200, 250, 150,],
}
)
df.date = pd.to_datetime(df.date)
df_TotalDay = df[['date','amount']].copy(deep=True)
df_TotalDay = df_TotalDay.groupby('date').amount.sum()
fig, ax = plt.subplots(figsize=(15,5))
ax.plot(df_TotalDay.index, df_TotalDay.values)
plt.xticks(pd.date_range(df_TotalDay.index.min(), df_TotalDay.index.max(), freq='YS'))
plt.show()
要僅顯示年份,您可以使用
import matplotlib.dates as mdates
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y'))

uj5u.com熱心網友回復:
Z Li 答案的替代方法是使用 matplotlibs dates.YearLocator
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
from datetime import datetime as dt
df = pd.DataFrame(
{
'date': ['2011-01-01', '2011-02-01', '2012-01-01', '2012-02-01', ],
'amount': [100, 200, 250, 150,],
}
)
df.date = pd.to_datetime(df.date)
df_TotalDay = df[['date','amount']].copy(deep=True)
df_TotalDay = df_TotalDay.groupby('date').amount.sum()
fig, ax = plt.subplots(figsize=(15,5))
ax.plot(df_TotalDay.index, df_TotalDay.values)
ax.set_xlabel('Year')
ax.minorticks_off()
ax.xaxis.set_major_locator(matplotlib.dates.YearLocator())
ax.xaxis.set_major_formatter(matplotlib.dates.DateFormatter("%Y"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/440756.html
標籤:Python 熊猫 matplotlib
上一篇:根據條件更改線條的粗細
