Lesen Sie die Koordinaten des Diagramms in der Grafik mit Python-matplotlib (Super-Anfänger)

Einführung

Das letzte Mal habe ich das Programm bis zum "Lesen der Koordinaten des Bildes" eingeführt, aber dieses Mal werde ich basierend auf diesem Programm die numerischen Werte im Diagramm lesen (die Koordinaten des Bildes in die numerischen Werte im Diagramm konvertieren). Ich versuchte es.

Die Eingabegenauigkeit der Koordinatenachsen ist gering und es handelt sich nur um einen ungefähren Wert. Es handelt sich also nicht um einen Ersatz, der in der Praxis verwendet werden kann, aber es scheint, dass er zu einem Ersatz geworden ist, den Sie sich vorstellen können: "Ich möchte so etwas tun".

Wie oben erwähnt, besteht die Herausforderung meines Erachtens darin, die Eingabegenauigkeit der Koordinatenachsen des Diagramms zu verbessern und die Genauigkeit beim Klicken auf Punkte weiter zu verbessern. Von hier an scheint es ziemlich schwierig zu sein.

Umrechnungsformel in den Wert im Diagramm

x=x_{min}+(x_{max}-x_{min})\cdot \cfrac{k_{xx}-k_{xi}}{k_{xf}-k_{xi}}
y=y_{min}-(y_{max}-y_{min})\cdot \cfrac{k_{yy}-k_{yf}}{k_{yf}-k_{yi}}

Programm

py_img_test1.py


from PIL import Image
import matplotlib.pyplot as plt
import numpy as np
import warnings;warnings.filterwarnings('ignore')

im=Image.open('fig_PSHQ1.png')
im_list=np.asarray(im)
plt.imshow(im_list)

#click left-top and right-bottom
nn=2
a=plt.ginput(n=nn)
xi=a[0][0]
yi=a[0][1]
xf=a[1][0]
yf=a[1][1]
del a

#click on the graph
nn=5
a=plt.ginput(n=nn)
b=np.array(a)
vec_x=b[:,0]
vec_y=b[:,1]
plt.plot( vec_x,vec_y, 'ro' )

# range of the graph
#(xmin,xmax)=(0,12000)
#(ymin,ymax)=(60,90)

xmin,xmax=map(float,input('xmin xmax= ').split())
ymin,ymax=map(float,input('ymin ymax= ').split())

# calculation of the values
xx=xmin+(xmax-xmin)*(vec_x-xi)/(xf-xi)
yy=ymin-(ymax-ymin)*(vec_y-yf)/(yf-yi)
for x,y in zip(xx,yy):
    print(x,y)

plt.savefig('fig_test.png', bbox_inches="tight", pad_inches=0.2)
plt.show()

Wie benutzt man

  1. Beim Starten des Programms wird ein Bild angezeigt
  2. Klicken Sie oben links und unten rechts auf das Diagramm. Dadurch können $ (k_ {xi}, k_ {yi}) $ und $ (k_ {xf}, k_ {yf}) $ eingegeben und definiert werden.
  3. Klicken Sie auf 5 beliebige Punkte
  4. Sie werden nach dem Minimum und Maximum der x-Achse auf der Konsole gefragt. Geben Sie diese ein. Infolgedessen werden $ x_ {min} $ und $ x_ {max} $ eingegeben und definiert.
  5. Sie werden auf der Konsole nach dem Minimum und Maximum der y-Achse gefragt. Geben Sie diese ein. Infolgedessen werden $ y_ {min} $ und $ y_ {max} $ eingegeben und definiert.
  6. Die Werte in der Grafik der 5 angeklickten Punkte werden angezeigt.
  7. Schließen Sie das Display und beenden Sie es

Eingabe / Ausgabe auf der Konsole

$ python3 py_img_test1.py
xmin xmax= 0 12000
ymin ymax= 60 90
-31.25 62.1212121212
1937.5 70.202020202
3968.75 74.0404040404
6000.0 77.1717171717
9968.75 82.2222222222

Ausgabebild

fig_test.png

das ist alles

Recommended Posts

Lesen Sie die Koordinaten des Diagramms in der Grafik mit Python-matplotlib (Super-Anfänger)
Lesen Sie das Diagrammbild mit OpenCV und ermitteln Sie die Koordinaten des Endpunkts des Diagramms
Lesen Sie die Bildkoordinaten mit Python-matplotlib
Lesen Sie die CSV-Datei mit dem Jupiter-Notizbuch und schreiben Sie die Grafik übereinander
Zeigen Sie das Diagramm von tensorBoard auf jupyter an
Erhöhen Sie die Schriftgröße des Diagramms mit matplotlib
Die Basis der Graphentheorie mit Matplotlib-Animation
Ganz rechts Koordinaten des Etiketts mit tkinter erstellt
Spielen Sie mit der Implementierung der Pythonista 3-Benutzeroberfläche [Super Super Primer]
Ich möchte die Standortinformationen von GTFS Realtime auf Jupyter zeichnen! (Mit Ballon)
Zeichnen auf Jupyter mit der Plot-Funktion von Pandas
Lesen Sie die Leistung des Smart Meters mit M5StickC (BP35C0-J11-T01 Edition) ab.
[In 3 Zeilen] Zeichnen Sie die Bevölkerungspyramide (Balkendiagramm der Altersgruppe / des Geschlechts) nur mit Pandas
Wie man zeichnet, indem man die Farbe des Diagramms kontinuierlich mit matplotlib ändert und einfach viele Legenden anordnet
Lesen Sie das Tag, das Ihnen in ec2 mit boto3 zugewiesen wurde
Lassen Sie uns den Befehl pünktlich mit dem Bot der Zwietracht ausführen
Lesen Sie die GRIB2-Datei der Meteorological Agency auf pygrib
Formatieren Sie die Zeitachse des Pandas-Zeitreihendiagramms mit matplotlib neu
Bis zum Start des Django-Tutorials mit Pycharm unter Windows
Rufen Sie den Hostnamen des Host-PCs mit Docker unter Linux ab
Verknüpfte Komponenten des Diagramms
Interaktives Diagramm eines 3D-Diagramms
[Statistik] Erfassen Sie das Bild der zentralen Polbegrenzungstheorie mit einem Diagramm
Ich habe mit Kaggle Start Book basierend auf Kaggle studiert [Teil 1]
Zählen Sie mit NetworkX den maximal verketteten Teil eines zufälligen Diagramms
Ich habe das Bild der Science University auf Twitter mit Word2Vec überprüft.
Zeichnen Sie die Ausbreitung des neuen Koronavirus
Anrufdiagramm mit PyCallGraph ausgeben
Berechnen Sie die kürzeste Route eines Diagramms mit der Dyxtra-Methode und Python
Lesen Sie die Python # .txt-Datei für Super-Anfänger in Python mit .py
[Bilderkennung] Lesen des Ergebnisses der automatischen Annotation mit VoTT
Bearbeiten Sie die Datei des SSH-Verbindungszielservers auf dem Server mit VS-Code
Spielen Sie den Kommentar des Nico Nico-Videos auf dem Terminal in Verbindung mit dem Video ab
Ich habe es mit den Top 100 PyPI-Paketen versucht.> Ich habe versucht, die auf Python installierten Pakete grafisch darzustellen
Lesen Sie die Datei mit Python und löschen Sie die Zeilenumbrüche [Hinweise zum Lesen der Datei]
Bereiten Sie die Umgebung von Chainer auf der EC2-Spot-Instanz mit AWS Lambda vor
Die Geschichte des Versuchs, SSH_AUTH_SOCK mit LD_PRELOAD auf dem Bildschirm veraltet zu halten