Python matplotlib로 도표 만들기(초초보자용)-3(도표의 좌표값 얻기)

11271 단어 PythonUbuntu
실행 환경
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()
방금 코드를 실행할 때 더 이상 오류가 발생하지 않습니다.
원인 불명???

좋은 웹페이지 즐겨찾기