簡體   English   中英

如果在情節上使用鼠標滾動,Matplotlib交互式情節將崩潰

[英]Matplotlib interactive plots crash if mouse scroll used on plot

每當我在Macbook Pro(OSX 10.13.6)上使用帶有Matplotlib的plt.show()繪制數據時,似乎都會發生此問題。 如果創建一個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() 

任何有關如何解決此問題的建議將不勝感激。

我想到現在沒關系,但這似乎是一個未解決的問題,正在#9637中進行討論

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM