Python Matplotlib 绘图:解决 X 轴刻度数量与标签数量不匹配的错误

在使用 Python 的 Matplotlib 库进行绘图时,可能会遇到 X 轴刻度数量与标签数量不匹配的错误,导致图表无法正常显示。本文将介绍如何解决这个问题。

问题描述

报错信息:

Traceback (most recent call last):
  File "D:\python\pycharm\lianxidaima\KS\running\12345.py", line 51, in <module>
    plt.xticks(x, data.columns[1:])
  File "D:\python\pycharm\lianxidaima\venv\lib\site-packages\matplotlib\pyplot.py", line 1814, in xticks
    labels = ax.set_xticklabels(labels, **kwargs)
  File "D:\python\pycharm\lianxidaima\venv\lib\site-packages\matplotlib\axes\_base.py", line 75, in wrapper
    return get_method(self)(*args, **kwargs)
  File "D:\python\pycharm\lianxidaima\venv\lib\site-packages\matplotlib\axis.py", line 1798, in _set_ticklabels
    return self.set_ticklabels(labels, minor=minor, **kwargs)
  File "D:\python\pycharm\lianxidaima\venv\lib\site-packages\matplotlib\axis.py", line 1721, in set_ticklabels
    "The number of FixedLocator locations"
ValueError: The number of FixedLocator locations (666), usually from a call to set_ticks, does not match the number of ticklabels (7).

这个错误通常出现在使用 plt.xticks() 设置 X 轴刻度时,刻度数量与标签数量不一致导致的。

解决方法

  1. 修改 X 轴刻度的设置,将 X 轴刻度数量与标签数量匹配:
plt.xticks(np.arange(1, len(variation) + 1), data.columns[1:])
  1. 修改 Y 轴刻度的设置,将刻度的数量与标签的数量匹配:
plt.yticks(np.arange(0, max(capacity) + 1000, 1000), ['0', '1000', '2000', '4000', '5000', '6000', '8000'])

修改后的代码

import os, shutil, traceback, sys, glob
import time
import getpass
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import xlsxwriter
from openpyxl import load_workbook

username = getpass.getuser()

try:
    data = pd.read_csv(r'C:\Users\Una\Desktop\BatteryMonitor1_modified.csv')
    variation = data['Variation']
    capacity = data['capacity']
    x = np.array(range(1, len(variation) + 1))
    y1 = np.array(variation)
    y2 = np.array(capacity)
    plt.rcParams['font.sans-serif'] = ['KaiTi']
    plt.rcParams['axes.unicode_minus'] = False
    fig = plt.figure()
    plt.figure(figsize=(8, 6))
    plt.xlim(0, len(variation) + 1)
    plt.ylim(0, max(capacity) + 100)
    plt.xticks(np.arange(1, len(variation) + 1), data.columns[1:])
    plt.yticks(np.arange(0, max(capacity) + 1000, 1000), ['0', '1000', '2000', '4000', '5000', '6000', '8000'])
    plt.xlabel('Variation', labelpad=10, fontsize='xx-large', color='#70AD47', fontweight='bold')
    plt.ylabel('capacity', labelpad=10, fontsize='xx-large', color='#70AD47', fontweight='bold')
    plt.grid(b=True, linestyle='dashed', linewidth=1)
    plt.title(label='1', loc='center')
    for a, b in zip(x, y1):
        plt.text(a, b, b, ha='center', va='bottom', fontsize=11)
    for a, b in zip(x, y2):
        plt.text(a, b, b, ha='center', va='bottom', fontsize=11)
    plt.plot(x, y1, color='k', linestyle='solid', linewidth=1,
             marker='o', markersize=3, label='折线图')
    plt.bar(x, y2, color='k', width=0.4, align='center', label='簇状柱形图')
    plt.legend(loc='upper left')
    plt.legend(ncol=2)
    plt.annotate('服务器宕机了', xy=(6, 1605), xytext=(7, 1605), arrowprops=dict(facecolor='black', arrowstyle='->'))
    plt.show()

except Exception as e:
    traceback.print_exc(file=open(r'C:\bug.txt', 'a+'))

通过以上修改,就可以解决 X 轴刻度数量与标签数量不匹配的错误,让图表正常显示。

Python Matplotlib 绘图:解决 X 轴刻度数量与标签数量不匹配的错误

原文地址: https://www.cveoy.top/t/topic/goGH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录