python - 使用 Matplotlib 将 xticks 设置为给定年份的年中
问题描述
我是 Python 和可视化的新手,我试图让我的情节只在每年年中显示 xticks(见下面我的情节)。我用 date_range 尝试了几件事,但现在我的情节每年显示两个 xticks,一个用于年初,一个用于年中。我怎样才能摆脱每年年初的xticks,只保留每年年中的xticks?
这是我的代码和情节:
texasdrought['ValidStart']=pd.to_datetime(texasdrought['ValidStart'])
droughtMask = texasdrought[texasdrought['ValidStart'].dt.year.between(2005,2015)]
# Set the figure size
plt.figure(figsize = (30,16))
# Create a mask with the dates
dates = droughtMask["ValidStart"]
# Categorize droughts
droughtcat = {
'D4 - Exceptional Drought': droughtMask["D4"],
'D3 - Extreme Drought': droughtMask["D3"],
'D2 - Severe Drought': droughtMask["D2"],
'D1 - Moderate Drought': droughtMask["D1"],
'D0 - Abnormally Dry': droughtMask["D0"]
}
fig, ax = plt.subplots()
ax.stackplot(dates, droughtcat.values(), labels=droughtcat.keys(),colors=['#660000','#FF0000','#FF6600','#FFCC99','#FFFF00'])
# Format y-axis to percentages
yearsFmt = mdates.DateFormatter("'%y")
ax.xaxis.set_major_formatter(yearsFmt)
#ax.yaxis.set_major_formatter(mtick.PercentFormatter())
# Add legend location
ax.legend(loc='upper left')
# Add title to the stackplot
ax.set_title('Drought in Texas (2005-2015)')
ticks = pd.date_range('2005-01-01', '2015-12-31', freq='6M')
plt.xticks(ticks)
# Add axis labels
ax.set_xlabel('Year')
ax.set_ylabel('Drought Intensity')
# Save figure as DroughtPlot.jpg
fig.savefig('DroughtPlot.jpg')
plt.show()
谢谢你。
解决方案
改用这个:
ticks = pd.date_range('2005-01-01', '2015-12-31', freq='A-JUN')
这将在中间月份的最后一个日期生成在每年中间结束的每月日期。
DatetimeIndex(['2005-06-30', '2006-06-30', '2007-06-30', '2008-06-30',
'2009-06-30', '2010-06-30', '2011-06-30', '2012-06-30',
'2013-06-30', '2014-06-30', '2015-06-30'],
dtype='datetime64[ns]', freq='A-JUN')
推荐阅读
- foreach - for-each-group 结合 tokenize 从属性中收集所有可能的值
- python - Discord 命令机器人不响应(python)
- javascript - commonJS 模型中的类型检查
- python - softmax 的批量推断总和不等于 1
- javascript - 从对象数组中删除一级
- c# - 使用离线直接包在本地托管我的机器人
- linux - go: 当我作为非 root 用户具有正确的能力时,无法打开和写入 /proc/os.Getpid()/oom_score_adj
- verilog - 如何修复“可能从不完整的案例或 if 语句生成闩锁”消息?
- python - newshape (, -1) 有什么作用?
- swift - 通过 Swift 泛型初始化 SwiftUI 视图