前提・実現したいこと
私はpython3で実験データをヒートマップのような図で表したいと思ってます。
python3は最近勉強し始めたところなので、調べながら進めてます。
他にもプログラムで問題になりそうな箇所ありましたら、指摘頂けると幸いです。
発生している問題・エラーメッセージ
上から順にプログラムを組んでいってます。
matplotlabをimportするとなぜかエラーになってしまいます。
それ以前のコードではうまくXYZ座標作れてます。
エラーメッセージ 2018-04-17 12:05:21.515 Python[44316:1775941] -[NSApplication _setup:]: unrecognized selector sent t o instance 0x7f96c28b3e70 2018-04-17 12:05:21.518 Python[44316:1775941] *** Terminating app due to uncaught exception 'NSInval idArgumentException', reason: '-[NSApplication _setup:]: unrecognized selector sent to instance 0x7f 96c28b3e70' *** First throw call stack: ( 0 CoreFoundation 0x00007fff527e732b __exceptionPreprocess + 171 1 libobjc.A.dylib 0x00007fff79e61c76 objc_exception_throw + 48 2 CoreFoundation 0x00007fff5287fe04 -[NSObject(NSObject) doesNotRecog nizeSelector:] + 132 3 CoreFoundation 0x00007fff5275d870 ___forwarding___ + 1456 4 CoreFoundation 0x00007fff5275d238 _CF_forwarding_prep_0 + 120 5 Tk 0x00007fff5ee7d318 TkpInit + 467 6 Tk 0x00007fff5edfc252 Tk_Init + 1710 7 _tkinter.cpython-36m-darwin.so 0x000000010b358de5 Tcl_AppInit + 84 8 _tkinter.cpython-36m-darwin.so 0x000000010b35443a _tkinter_create + 1047 9 Python 0x000000010a938199 _PyCFunction_FastCallDict + 166 10 Python 0x000000010a99f9b4 call_function + 511 11 Python 0x000000010a998317 _PyEval_EvalFrameDefault + 4950 12 Python 0x000000010a9a0155 _PyEval_EvalCodeWithName + 1781 13 Python 0x000000010a9a0a6b _PyFunction_FastCallDict + 449 14 Python 0x000000010a8fecf3 _PyObject_FastCallDict + 214 15 Python 0x000000010a8fee17 _PyObject_Call_Prepend + 156 16 Python 0x000000010a8feb60 PyObject_Call + 102 17 Python 0x000000010a94bd0b slot_tp_init + 61 18 Python 0x000000010a948ab1 type_call + 184 19 Python 0x000000010a8fecb7 _PyObject_FastCallDict + 154 20 Python 0x000000010a99f97d call_function + 456 21 Python 0x000000010a998317 _PyEval_EvalFrameDefault + 4950 22 Python 0x000000010a9a0155 _PyEval_EvalCodeWithName + 1781 23 Python 0x000000010a996f47 PyEval_EvalCode + 42 24 Python 0x000000010a9c0fc4 run_mod + 54 25 Python 0x000000010a9bfeb9 PyRun_FileExFlags + 160 26 Python 0x000000010a9bf4fe PyRun_SimpleFileExFlags + 285 27 Python 0x000000010a9d3bbd Py_Main + 3505 28 Python 0x000000010a8f1e1b Python + 7707 29 libdyld.dylib 0x00007fff7aa7b015 start + 1 30 ??? 0x0000000000000002 0x0 + 2 ) libc++abi.dylib: terminating with uncaught exception of type NSException Abort trap: 6
該当のソースコード
python3
ソースコード
# coding: utf-8 import tkinter as tk import tkinter.filedialog as fd import matplotlib.pyplot as plt import numpy as np root = tk.Tk() root.withdraw() file = fd.askopenfilename( title="ファイルを選んでください。", filetypes=[("TEXT", ".txt"), ("TEXT", ".py"), ("TEXT", ".lvm")] ) arr = [[]] if file: with open(file, "r", encoding="utf_8")as fileobj: for i, line in enumerate(fileobj): line = line.strip("\n") a = line.split(" ") a = list(map(float, a)) arr.append(a) del arr[0] Z = np.array(arr) print(Z) sh = Z.shape x = np.arange(sh[0]+1) y = np.arange(sh[1]+1) print(x) print(y) X, Y = np.meshgrid(x, y) plt.pcolor(X, Y, Z) plt.colorbar plt.show()
試したこと
テキストファイルを読み込みたいが、読み込む前に終わってしまう。どうやらmatplotlabが悪さをしているように思えます。
以下テスト用のデータ
0.176242 0.158846 0.081636 0.125887 0.070649 0.085908
補足情報(FW/ツールのバージョンなど)
MacBook Airを使ってます。
ここにより詳細な情報を記載してください。
コメントより修正して実行した結果
◯tk文をコメントアウト
プログラムにファイル名を明記して行った。
→
エラーが出たので、test.txtを3行3列にし直して実行するとヒートマップの図が表示できた。
ただ一方で、tkをインポートしたいので、課題は残った。
# coding: utf-8 ''' import tkinter as tk ''' import tkinter.filedialog as fd import matplotlib.pyplot as plt import numpy as np ''' root = tk.Tk() root.withdraw() file = fd.askopenfilename( title="ファイルを選んでください。", filetypes=[("TEXT", ".txt"), ("TEXT", ".py"), ("TEXT", ".lvm")] ) ''' file = 'test.txt' arr = [[]] if file: with open(file, "r", encoding="utf_8")as fileobj: for i, line in enumerate(fileobj): line = line.strip("\n") a = line.split(" ") a = list(map(float, a)) arr.append(a) del arr[0] Z = np.array(arr) print(Z) sh = Z.shape x = np.arange(sh[0]+1) y = np.arange(sh[1]+1) print(x) print(y) X, Y = np.meshgrid(x, y) plt.pcolor(X, Y, Z) plt.colorbar plt.show()
回答1件
あなたの回答
tips
プレビュー