Python matplotlib로 도표 만들기(초초보자용)-3(도표의 좌표값 얻기)
Ubuntu Stdio 18.04LTS
Python 3.6.5
나는 도표에서 마우스를 움직이면 오른쪽 아래의 x, y 좌표값이 표시되는 것을 알고 있지만, 좌표값을 얻을 수 있기 때문에 해 보았다.
처음에는 오류가 발생했고 차트에 "+"태그가 표시되었지만 오류가 발생한 좌표값은 표시되지 않았습니다.다음 내용을 참조하십시오.
matplotlib로 도표에서 좌표 값 가져오기
파이썬 프로젝트 씨.
좌표 값 가져오기
http://seesaawiki.jp/python-project/d/%ba%c2%c9%b8%c3%cd%bc%e8%c6%c0%28ginput%29
예제 프로그램
#!/usr/bin/python3
# coding: UTF-8
#http://seesaawiki.jp/python-project/d/%ba%c2%c9%b8%c3%cd%bc%e8%c6%c0%28ginput%29
import matplotlib.pyplot as plt
x=[0,1,2,3,4,5,6,7,8,9,10]
y=[1,2,3,4,5,6,7,8,9,10,11]
plt.plot(x,y)
a=plt.ginput(n=1)[0]
print (a)
plt.show()
실행하고 차트를 클릭하면 빨간색 "+"태그가 표시되고 좌표 값이 표시됩니다.터미널의 좌표값과 도표의 좌표값은 다르지만 분리되어 진행되기 때문에 다르다.
나는 인터넷에서 잘못된 정보 해결 방안을 찾았지만 찾을 수 없었다.
다른 사이트의 예시 프로그램도 오류로 인해 실행할 수 없습니다.
$ ./グラフ上の座標を取得する1.py
Traceback (most recent call last):
File "/home/ty/.local/lib/python3.6/site-packages/matplotlib/blocking_input.py", line 115, in __call__
self.fig.canvas.start_event_loop(timeout=timeout)
File "/home/ty/.local/lib/python3.6/site-packages/matplotlib/backend_bases.py", line 2460, in start_event_loop
self.flush_events()
File "/home/ty/.local/lib/python3.6/site-packages/matplotlib/backends/_backend_tk.py", line 452, in flush_events
self._master.update()
File "/usr/lib/python3.6/tkinter/__init__.py", line 1174, in update
self.tk.call('update')
_tkinter.TclError: can't invoke "update" command: application has been destroyed
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/ty/.local/lib/python3.6/site-packages/matplotlib/backends/tkagg.py", line 26, in blit
dataptr, colormode, bboxptr)
_tkinter.TclError: this isn't a Tk application
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "./グラフ上の座標を取得する1.py", line 8, in <module>
a=plt.ginput(n=3)[0]
File "/home/ty/.local/lib/python3.6/site-packages/matplotlib/pyplot.py", line 725, in ginput
return gcf().ginput(*args, **kwargs)
File "/home/ty/.local/lib/python3.6/site-packages/matplotlib/figure.py", line 2153, in ginput
show_clicks=show_clicks)
File "/home/ty/.local/lib/python3.6/site-packages/matplotlib/blocking_input.py", line 291, in __call__
BlockingInput.__call__(self, n=n, timeout=timeout)
File "/home/ty/.local/lib/python3.6/site-packages/matplotlib/blocking_input.py", line 118, in __call__
self.cleanup()
File "/home/ty/.local/lib/python3.6/site-packages/matplotlib/blocking_input.py", line 278, in cleanup
self.fig.canvas.draw()
File "/home/ty/.local/lib/python3.6/site-packages/matplotlib/backends/backend_tkagg.py", line 13, in draw
tkagg.blit(self._tkphoto, self.renderer._renderer, colormode=2)
File "/home/ty/.local/lib/python3.6/site-packages/matplotlib/backends/tkagg.py", line 34, in blit
dataptr, colormode, bboxptr)
_tkinter.TclError: this isn't a Tk application
하지만 해외 질문 사이트의 코드를 실행하면 잘 실행된다.https://stackoverflow.com/questions/24002000/python-ginput-not-allowing-new-points-to-be-plotted
#!/usr/bin/python3
# coding: UTF-8
import time
import numpy as np
import matplotlib.pyplot as plt
def tellme(s):
print(s)
plt.title(s,fontsize=16, **font)
plt.draw()
font = {'family':'IPAGothic'} #日本語Fontを指定
##################################################
# 3点をクリックして三角形を定義する
##################################################
plt.clf()
plt.axis([-1.,1.,-1.,1.])
plt.setp(plt.gca(),autoscale_on=False)
tellme('あなたは三角形を定義し、クリックして開始します')
plt.waitforbuttonpress()
happy = False
while not happy:
pts = []
while len(pts) < 3:
tellme('マウスで3つのコーナーを選択')
pts = np.asarray( plt.ginput(3,timeout=-1) )
if len(pts) < 3:
tellme('開始点が少なすぎる')
time.sleep(1) # Wait a second
ph = plt.fill( pts[:,0], pts[:,1], 'r', lw=2 )
tellme('ハッピー? キーをクリックするとはい、マウスをクリックしていいえ')
happy = plt.waitforbuttonpress()
# Get rid of fill
if not happy:
for p in ph: p.remove()
방금 코드를 실행할 때 더 이상 오류가 발생하지 않습니다.원인 불명???
Reference
이 문제에 관하여(Python matplotlib로 도표 만들기(초초보자용)-3(도표의 좌표값 얻기)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ty21ky/items/fb11ae5343da4a91a012텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)