你好。我现在正在根据年份和数字字典数据绘制线图。当我尝试使用 matplotlib.pyplot 绘制线图时,其轴始终固定为 0。
例如,我想从字典中绘制图表( year_counts= {‘2013’:7, ‘2014’:20, ‘2015’:10, ‘2016’:37, ‘2017’:1})。但是它的轴从 0 开始并增加 1。即使我设置了 x 限制,plt.xlim(xmin=int(years[0]))或 plt.axis([int(years[0]), int(years[-1]), 0, max(book_counts)]) 也不起作用。
我怎样才能以 2013 年开始 X 轴?
这是我使用的代码
year_counts= {'2013':7, '2014':20, '2015':10, '2016':37, '2017':1} years = sorted(year_counts) book_counts = [year_counts[year] for year in years] plt.plot(years, book_counts) plt.xlim(xmin=int(years[0])) # didn't work plt.axis([int(years[0]), int(years[-1]), 0, max(book_counts)]) # didn't work plt.show()
在使用 matplotlib.pyplot 绘制线图时,X 轴默认情况下可能会将字符串类型的数据作为类别处理,从而导致 X 轴显示为 0, 1, 2 等类别编号,而不是您想要的年份刻度。为了解决这个问题,可以将年份转换为整数类型,确保 Matplotlib 将它们作为数值而不是类别来处理。
matplotlib.pyplot
您可以对代码做一些简单的修改,确保年份被解释为数值数据。以下是改进后的代码:
import matplotlib.pyplot as plt # 数据 year_counts = {'2013':7, '2014':20, '2015':10, '2016':37, '2017':1} # 将年份转换为整数 years = sorted([int(year) for year in year_counts]) # 将年份转换为整数 book_counts = [year_counts[str(year)] for year in years] # 获取对应的值 # 绘制图形 plt.plot(years, book_counts, marker='o') # 添加 marker='o' 使数据点更加明显 plt.xlim(min(years), max(years)) # 设置 X 轴范围 plt.ylim(0, max(book_counts) + 5) # 设置 Y 轴范围,加5确保数据不会太贴近顶端 plt.xlabel('Year') # 设置 X 轴标签 plt.ylabel('Count') # 设置 Y 轴标签 plt.title('Yearly Counts') # 设置图形标题 plt.show()
years
marker='o'
xlim
ylim
plt.xlim
plt.ylim
max(book_counts) + 5
这样,X 轴应会正确显示为 2013 到 2017 的年份刻度。