在分组条形图 matplotlib 中将日期 x 轴从一天更改为一个月
Change date x-axis from day to month in grouped bar plot matplotlib
我正在尝试在分组条形图中逐日更改 x 轴刻度。我尝试了 and and 的解决方案,但其中 none 有效。
我用每日刻度显示图表的代码如下:
ax = data.groupby(['pos', data['date'].dt.strftime('')])['date'].count().unstack(0).plot.bar(title = 'TITLE', figsize=(14,8))
_ = ax.set_xlabel('day')
_ = ax.set_ylabel('count')
mylabels = ['R', 'L']
_ = ax.legend(labels=mylabels)
plt.show()
我尝试了以下无效的方法(但也没有引发错误):
data['date_for_index'] = data['date']
data = data.set_index('date_for_index')
ax = data.groupby(['pos', data['date'].dt.strftime('')])['date'].count().unstack(0).plot.bar(title = 'TITLE', figsize=(14,8))
_ = ax.set_xlabel('day')
_ = ax.set_ylabel('count')
mylabels = ['R', 'L']
ax.set_xticks(data.index)
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m"))
ax.xaxis.set_minor_formatter(mdates.DateFormatter("%Y-%m"))
_ = plt.xticks(rotation=90)
mylabels = ['R', 'L']
_ = ax.legend(labels=mylabels)
plt.show()
我是怎么做到的:
grouped_data = data \
.groupby(['pos', data['date'].dt.strftime('')])['date'] \
.count() \
.unstack(0) \
.reset_index()
grouped_data.columns = ['date', 'r_count', 'l_count']
grouped_data['date'] = pd.to_datetime(grouped_data['date'])
fig, ax = plt.subplots(figsize=(14, 8))
ax.bar(grouped_data['date'], grouped_data['r_count'])
ax.bar(grouped_data['date'], grouped_data['l_count'])
ax.xaxis_date()
ax.set_xlabel('date')
ax.set_ylabel('count')
mylabels = ['r', 'l']
ax.legend(labels=mylabels)
plt.show()
我正在尝试在分组条形图中逐日更改 x 轴刻度。我尝试了
ax = data.groupby(['pos', data['date'].dt.strftime('')])['date'].count().unstack(0).plot.bar(title = 'TITLE', figsize=(14,8))
_ = ax.set_xlabel('day')
_ = ax.set_ylabel('count')
mylabels = ['R', 'L']
_ = ax.legend(labels=mylabels)
plt.show()
data['date_for_index'] = data['date']
data = data.set_index('date_for_index')
ax = data.groupby(['pos', data['date'].dt.strftime('')])['date'].count().unstack(0).plot.bar(title = 'TITLE', figsize=(14,8))
_ = ax.set_xlabel('day')
_ = ax.set_ylabel('count')
mylabels = ['R', 'L']
ax.set_xticks(data.index)
ax.xaxis.set_major_formatter(mdates.DateFormatter("%Y-%m"))
ax.xaxis.set_minor_formatter(mdates.DateFormatter("%Y-%m"))
_ = plt.xticks(rotation=90)
mylabels = ['R', 'L']
_ = ax.legend(labels=mylabels)
plt.show()
我是怎么做到的:
grouped_data = data \
.groupby(['pos', data['date'].dt.strftime('')])['date'] \
.count() \
.unstack(0) \
.reset_index()
grouped_data.columns = ['date', 'r_count', 'l_count']
grouped_data['date'] = pd.to_datetime(grouped_data['date'])
fig, ax = plt.subplots(figsize=(14, 8))
ax.bar(grouped_data['date'], grouped_data['r_count'])
ax.bar(grouped_data['date'], grouped_data['l_count'])
ax.xaxis_date()
ax.set_xlabel('date')
ax.set_ylabel('count')
mylabels = ['r', 'l']
ax.legend(labels=mylabels)
plt.show()