这段代码以前是可以工作的,但是在创建了一个新环境之后,它停止了对该行的工作

plt.xticks(x, months, rotation=25,fontsize=8)

如果我 comments 这一行,那么在放置这一行之后,不会抛出错误

ValueError: The number of FixedLocator locations (5), usually from a call to set_ticks, does not match the number of ticklabels (12).

import numpy as np
import matplotlib.pyplot as plt

dataset = df
dfsize = dataset[df.columns[0]].size
x = []
for i in range(dfsize):
    x.append(i)

dataset.shape
# dataset.dropna(inplace=True)
dataset.columns.values
var = ""
for i in range(dataset.shape[1]):  ## 1 is for column, dataset.shape[1] calculate length of col

    y = dataset[dataset.columns[i]].values
    y = y.astype(float)
    y = y.reshape(-1, 1)
    y.shape
    from sklearn.impute import SimpleImputer

    missingvalues = SimpleImputer(missing_values=np.nan, strategy='mean', verbose=0)
    missingvalues = missingvalues.fit(y)
    y = missingvalues.transform(y[:, :])

    from sklearn.preprocessing import LabelEncoder, OneHotEncoder
    from sklearn.compose import ColumnTransformer

    labelencoder_x = LabelEncoder()
    x = labelencoder_x.fit_transform(x)

    from scipy.interpolate import *

    p1 = np.polyfit(x, y, 1)
    # from matplotlib.pyplot import *
    import matplotlib
    matplotlib.use('Agg')
    import matplotlib.pyplot as plt

    plt.figure()
    plt.xticks(x, months, rotation=25,fontsize=8)
    #print("-->"+dataset.columns[i])
    plt.suptitle(dataset.columns[i] + ' (xyz)', fontsize=10)
    plt.xlabel('month', fontsize=8)
    plt.ylabel('Age', fontsize=10)
    plt.plot(x, y, y, 'r-', linestyle='-', marker='o')
    plt.plot(x, np.polyval(p1, x), 'b-')
    y = y.round(decimals=2)
    for a, b in zip(x, y):
        plt.text(a, b, str(b), bbox=dict(facecolor='yellow', alpha=0.9))

    plt.grid()
    # plt.pause(2)
    # plt.grid()

    var = var + "," + dataset.columns[i]
    plt.savefig(path3 + dataset.columns[i] + '_1.png')
    plt.close(path3 + dataset.columns[i] + '_1.png')
    plt.close('all')

推荐答案

我还偶然发现了这个错误,并发现让你的xtick_标签和xtick列表长度相等是可行的.所以在你的情况下:

def month(num):
  # returns month name based on month number


num_elements = len(x)
X_Tick_List = []
X_Tick_Label_List=[]

for item in range (0,num_elements):
    X_Tick_List.append(x[item])
    X_Tick_Label_List.append(month(item+1))

plt.xticks(ticks=X_Tick_List,labels=X_Tick_LabeL_List, rotation=25,fontsize=8)
       

Python-3.x相关问答推荐

tkinter/python3.9 中的 Entry 子类和用户输入重复的问题

无法理解此递归函数的分配和环境用法

Keras 中 Conv2D 层的意外结果

来自嵌套字典的完整地址

pytorch 中 mps 设备的 manual_seed

导入在不同目录中定义的函数

避免重复连续字符但不包括一个特定字符的正则表达式

在 Django 中执行 JSONRenderer.render(serialized_student_data.data) 时遇到问题

Python:获取未绑定的类方法

Python 3.5 中编码 utf-8 和 utf8 的区别

两个字符串之间的正则表达式匹配?

逗号分隔列表的 argparse 操作或类型

使用逗号时,除了处理程序中的语法无效

tkinter TclError:错误的文件类型使用 askopenfilename

Python的max函数有多高效

根据条件过滤元组列表

如何等待 create_task() 创建的任务完成?

如何正确创建自定义文本编解码器?

Python 3 - Zip 是 pandas 数据框中的迭代器

try 在 Mac OS 中运行此命令pipenv install requests时出错