matplotlib bug1:TypeError_ ‘tuple‘ object is not callable; matplotlib figsize.

问题描述

今天在用matplotlib画图的时候,发生了一件很神奇的事,plt.figure()不管用了!

具体代码如下:

# 调用库
import pandas as pd
import matplotlib.pyplot as plt
# 生成数据框,x为0~50,y为x的平方
df = pd.DataFrame([i/2 for i in range(100)],columns=['x'])
df['y2'] = df.x.apply(lambda x:x*x)
# 绘图
fig = plt.figure(figsize=(10,10))   # 指定画布大小
plt.plot(df.x,df.y2,label='y=x^2')  
# 加注释
plt.annotate(r'y=x^2'            # 标签
             ,xycoords='data'
             ,xy=(40,40*40)      # 指向点
             ,textcoords='offset points'
             ,xytext=(-50,40)    # 注释位置
             ,fontsize=15        # 字号
             ,c='b'              # 颜色
             ,arrowprops=dict(arrowstyle='->'           # 指向点使用的线
                              ,connectionstyle='angle3' # 线类型
                             ))
plt.show()

跑完报错,该报错指向第6行fig = plt.figure(figsize=(10,10))

TypeError: ‘tuple’ object is not callable; matplotlib figsize.

这个报错咋一看很无厘头,怎么变成了元组对象不能调用figsize()
而且将代码复制到其他地方跑的时候并没有问题,唯独这时候跑的时候就有问题。

解决方法

在后来的某一个巧合下,忽然意识到了错误的来源,就是一开始,我写错了代码,形如下(感兴趣的小伙伴可以复现一下~)

 plt.figure = (1010)

plt.figure原本是一个函数,但是被我赋值成了一个元组,所以后来的代码plt.figure(figsize=(10,10)),就变成了(10,10)(figsize=(10,10)),把元组看成一个函数调用figsize,故报错。

该报错或许只会在jupyter notebook和测试环境等会暂存变量的环境中才会出现,因为这类环境存储了我前面写错的赋值。如果是直接通过编译器(如vscode、pycharm等)运行代码,运行结束后变量就失效了,便不会出现这类错误赋值导致的错误。

解决方法很简单,重启内核,然后重跑代码,便可正常画图。
matplotlib bug1:TypeError_ ‘tuple‘ object is not callable; matplotlib figsize._第1张图片

你可能感兴趣的:(Python数据分析合集,matplotlib,python,数据分析)