当我在谷歌colab中运行以下来自w3school的python代码时,我得到了"AttributeError: 'OutStream' object has no attribute 'buf



这里我提到了我在w3school中看到的代码。

# w3school code
import sys
import matplotlib
matplotlib.use('Agg')
import pandas as pd
import matplotlib.pyplot as plt
health_data = pd.read_csv("data.csv", header=0, sep=",")
health_data.plot(x ='Average_Pulse', y='Calorie_Burnage', kind='line'),
plt.ylim(ymin=0, ymax=400)
plt.xlim(xmin=0, xmax=150)
plt.show()
#Two  lines to make our compiler able to draw:
plt.savefig(sys.stdout.buffer)
sys.stdout.flush()

如果我使用下面的代码在google colab中的Kaggle数据集上执行上述操作,我会得到错误(AttributeError:"OutStream"对象没有属性"buffer"(。

#Three lines to make our compiler able to draw:
import sys
import matplotlib
matplotlib.use('Agg')
import pandas as pd
import matplotlib.pyplot as plt
health_data = pd.read_csv("/content/drive/MyDrive/India_GDP_Data.csv", header=0, sep=",")
health_data.plot(x ='Year', y='GDP_In_Billion_USD', kind='line'),
plt.ylim(ymin=0, ymax=400)
plt.xlim(xmin=0, xmax=150)
plt.show()
#Two  lines to make our compiler able to draw:
plt.savefig(sys.stdout.buffer)
sys.stdout.flush()

我在W3schools上也遇到了同样的问题!

在笔记本中使用matplotlib inline,如下所示:

%matplotlib inline
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('data.csv')
df.plot()
plt.show()
sys.stdout.flush()

我知道这件事来得太晚了,但我觉得以后可能会对其他人有所帮助。我通过做以下事情在Jupyter Notebook中修复了w3school的相同代码:

  1. 删除matplotlib.use('Ag'(

  2. 添加%matplotlib内联

  3. 将plt.savefig(sys.stdout.buffer(更改为plt.save无花果("mygraph.png"(在下面找到工作效果。

    %matplotlib inline
    import sys
    import matplotlib
    
    import pandas as pd
    import matplotlib.pyplot as plt
    health_data = pd.read_csv("data.csv", header=0, sep=",")
    health_data.plot(x ='Average_Pulse', y='Calorie_Burnage', kind='line'),
    plt.ylim(ymin=0, ymax=400)
    plt.xlim(xmin=0, xmax=150)
    plt.show()
    #Two  lines to make our compiler able to draw:
    plt.savefig("mygraph.png")
    sys.stdout.flush()
    

最新更新