import matplotlib.pyplot as plt
# Use min and max to get the range of years to use in axis ticks
year_min = df['year'].min()
year_max = df['year'].max()
df['year'] = df['year'].astype(str) # Prevents conversion to float
plt.xticks(range(year_min, year_max, 1)) # Sets plot ticks to years within range
3条答案
按热度按时间yruzcnhs1#
使用整数数据会导致matplotlib轴只显示整数的期望是不合理的,最后,每个轴都是数值浮点轴。
刻度和标签是由定位器和格式化器决定的,matplotlib并不知道你只想画整数。
一些可能的解决方案:
告知默认定位器使用整数
默认的定位器是
AutoLocator
,它接受属性integer
,因此您可以将此属性设置为True
:示例:
使用固定定位器
您可以使用
ax.set_ticks()
只勾选 Dataframe 中存在的年份。将年份转换为日期
你可以将年份栏转换为日期。对于日期,自动进行更好的标记。
在所有情况下,您都将得到如下结果:
kpbwa7wx2#
希望这有帮助!
tcomlyy63#
一个对我有效的解决方案是首先将列转换为int,然后在第二步中再次转换为string:
对于定位器的使用,这或多或少可能是一种“快速而肮脏”的解决方法。