Python kullanarak çizgi çekmek

PislickB3

Kilopat
Katılım
20 Haziran 2018
Mesajlar
109
Çözümler
1
Merhaba, ben Python öğrenmeye yeni başladım ancak aklımda bir fikir var. Bunu uygulamaya dökmeye çalışıyorum ancak çözemediğim bir nokta var. Ekran üzerinden 2 tane koordinatı (X, y şeklinde) alıyorum ve bu iki nokta üzerinde bir çizgi çekmek istiyorum ancak Python kullanarak yeni bir ekran açmadan bunu yapmanın yolunu bulamadım. Yapmak istediğimi tam açıklamam gerekirse örneğin Chrome'da bir sayfa açık ve bu sayfada 2 tane nokta var. O 2 noktanın koordinatlarını alabiliyorum ama o iki koordinat arasına bir çizgi çekmek istiyorum ve o çizgiyi koordinatları aldığım sayfanın üstünde görmek istiyorum. Yardımcı olabilirseniz çok sevinirim.
 
Matplotlib kütüphanesini veya OpenCV kütüphanesini kullanarak yapabilirsiniz.
Cevabınız için teşekkür ederim.Koordinatları aldım. Matplotlib, Numpy ve Mpld3 kütüphanelerini kullanarak oluşturduğum çizgiyi bir Chrome penceresinde açmayı başardım. Ancak hali hazırda açık olan bir sekme üzerinde açamıyorum bunu nasıl yapabilirim ?
 
Eve geçince anlatabilirim veya @300319 Eray hocam anlatabilirse iyi olur, ben şu an spordayım.

Eve geçince anlatabilirim veya @300319 Eray hocam anlatabilirse iyi olur, ben şu an spordayım.
Set arasındayken ufak bir yardımcı olmak istedim. Youtube üzerinde "Python Matplotlib show plot in new tab" diye aratarak bulabilirsiniz. Eğer ki yapamazsanız eve geçince detaylı şekilde anlatabilirim.
 
Son düzenleme:
Kodun aşaması şöyle şekilde.
  • Matplotlib kütüphanesi ile sin fonksiyonu kullanarak y dizisi oluşturulur. Bu dizi ax.plotx, y komutu ile bir çizgi grafiğe dönüştürülür. mpld3.fig_to_html fonksiyonu, çizgi grafiğini HTML koduna dönüştürür ve dosya.html adlı bir dosya oluşturulur. Bu dosyaya HTML kodu yazılır. Son olarak, dosya.html dosyası tarayıcıda açılır.
Python:
import mpld3
import numpy as np
import matplotlib.pyplot as plt
import webbrowser

x = np.linspace(-10, 10, 100)
y = np.sin(x)

fig, ax = plt.subplots()
ax.plot(x, y)

html = mpld3.fig_to_html(fig)

with open("ohnkin.html", "w") as f:
    f.write(html)

chrome_path = 'C:/Program Files/Google/Chrome/Application/chrome.exe %s'
webbrowser.get(chrome_path).open_new_tab('ohnkin.html')
 

Bunu zaten yapmıştım. Asıl amacım bir sekmede dolaşırken oluşturduğum çizginin sayfa üzerine eklenmesi veya ekranın üstünde gözükmesiydi. Yine de yardımın için teşekkür ederim.
 
Bunu zaten yapmıştım. Asıl amacım bir sekmede dolaşırken oluşturduğum çizginin sayfa üzerine eklenmesi veya ekranın üstünde gözükmesiydi. Yine de yardımın için teşekkür ederim.
Selenium ile gerçekleştirebilirsiniz.

(Kodlar test edilmemiştir, arşivden çektim.)

Kod:
pip install selenium


Kod:
import mpld3
import numpy as np
import matplotlib.pyplot as plt
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

x = np.linspace(-10, 10, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)

html = mpld3.fig_to_html(fig)

driver = webdriver.Chrome()
driver.switch_to.window(driver.window_handles[-1])

driver.execute_script("document.body.innerHTML += '<div id=\"myplot\"></div>';")
driver.execute_script("document.getElementById('myplot').innerHTML = '{}';".format(html))

driver.refresh()

Kod:
import mpld3
import numpy as np
import matplotlib.pyplot as plt
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

x = np.linspace(-10, 10, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)

html = mpld3.fig_to_html(fig)

driver = webdriver.Chrome()
driver.switch_to.window(driver.window_handles[-1])

driver.execute_script("document.body.innerHTML += '{}';".format(html))

Kod:
import mpld3
import numpy as np
import matplotlib.pyplot as plt
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

x = np.linspace(-10, 10, 100)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)

html = mpld3.fig_to_html(fig)

driver = webdriver.Chrome()
driver.get('https://www.google.com.tr')

search_box = driver.find_element_by_name('q')
search_box.send_keys('Python')

driver.execute_script("document.body.innerHTML += '{}';".format(html))
 
Selenium güncellenmiş .Örneğin artık driver.find_element_by_name komutu kaldırılmış. Bu nedenle biraz araştırdım ve şu şekilde istediğimi biraz kötü bir şekilde olsa da başarmış oldum
Python:
import wx
app=wx.App()
dc=wx.ScreenDC()

dc.SetBrush(wx.TRANSPARENT_BRUSH)
dc.SetPen(wx.Pen((255, 0, 0), width=3, style=wx.PENSTYLE_SOLID))
    dc=wx.ScreenDC()
    dc.SetBrush(wx.TRANSPARENT_BRUSH)
    dc.SetPen(wx.Pen((255, 0, 0), width=3, style=wx.PENSTYLE_SOLID))
    dc.DrawLine(x1,y1,x2,y2)
x1,y1 x2,y2 yerinde istediğim koordinatları yazdım ve düz bir çizgi çizmeyi başardım. İhtiyacı olan biri olursa diye buraya bıraktım kodu ancak bu kod için wxPython kütüphanesine ihtiyaç var.
Yine de tüm yardımlarınız için teşekkür ederim.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…