Эта проблема, кажется, возникает всякий раз, когда я строю данные, используя plt.show () с Matplotlib на моем Macbook Pro (OSX 10.13.6).Если я создаю фрейм данных Pandas и отображаю данные с помощью Matplotlib, то показываю результат на экране в интерактивном окне (используя plt.show), окно (и matplotlib) часто вылетает.Это всегда будет происходить, если на экране сделать жест мыши для прокрутки вверх или вниз.В других случаях кажется, что это происходит случайным образом.
Когда происходит сбой графика, я получаю это как трассировку:
Traceback (most recent call last):
File "./plot_lc_vs_gnss.py", line 117, in <module>
main()
File "./plot_lc_vs_gnss.py", line 28, in main
plt.show()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/pyplot.py", line 253, in show
return _show(*args, **kw)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 208, in show
cls.mainloop()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/matplotlib/backends/_backend_tk.py", line 1073, in mainloop
Tk.mainloop()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/tkinter/__init__.py", line 557, in mainloop
_default_root.tk.mainloop(n)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
Данные, которые я читаю, представляют собой простой CSV, который был ранее сгенерированпанды также.Я создаю сюжет с помощью простого сценария, подобного следующему:
#!/usr/local/bin/python3
import matplotlib
matplotlib.use('TkAgg')
import json
import os
import numpy as np
import pandas as pd
import pymap3d as pm
import matplotlib.pyplot as plt
def load_csvs():
gnss = pd.read_csv('di3_d4_1017_gnss.csv')
ins = pd.read_csv('di3_d4_1017_ins.csv')
return gnss, ins
def plot_cdf(gnss, ins):
data = [gnss, ins]
plt.figure(figsize=[12,9])
ax = plt.subplot(1,1,1)
for ds in data:
if ds[err].any != np.nan:
dsorted = np.sort(ds['horizontal_error'])
yvals = np.arange(len(dsorted)) / float(len(dsorted) - 1) * 100
ax.plot(dsorted, yvals)
ax.grid()
ax.set_xlabel('Horizontal Error (m)')
ax.set_ylabel('Percent of Epochs')
title = 'Drive Test data \n DI-3 (roof) d4_1017 \n CDF Horizontal Error'
plt.title(title)
plt.legend(['gnss', 'ins'], loc='lower right')
def main():
gnss, ins = load_csvs()
plot_cdf(gnss, ins)
plt.show()
if __name__ == "__main__":
main()
Любой совет о том, как решить эту проблему, будет принята с благодарностью.