我有一組由數學運算式生成的點(坐標 X 和 Y),我想在螢屏的特定位置繪制結果圖形(我想確定繪制圖形居中的位置)。
我嘗試使用以下代碼來測驗公式是否得出正確的數字。但現在我需要在特定位置的預先存在的影像上繪制相同的輪廓。
B = 185
L = 250
W = (L-B)/6
D = (L/2)-L/4
x = np.linspace(-L/2, L/2, 500)
y1 = []
y2 = []
for X in x:
termo1 = sqrt((L**2 - 4*X**2) / (L**2 8*W*X 4*W**2))
termo2 = ((sqrt(5.5*L**2 11*L*W 4*W**2) * (sqrt(3)*B*B - 2*D*sqrt(L**2 2*W*L 4*W**2))
) / (sqrt(3)*B*L*(sqrt(5.5*L**2 11*L*W 4*W**2) - 2*sqrt(L**2 2*W*L 4*W**2))))
termo3 = 1 - sqrt((L*(L**2 8*W*X 4*W**2)) / (2*(L - 2*W)*X**2
(L**2 8*L*W - 4*W**2)*X 2*L*W**2 L**2*W L**2*W L**3))
calculo = B/2 * termo1 * (1-termo2 * termo3)
y1.append(calculo)
calculo = -B/2 * termo1 * (1-termo2 * termo3)
y2.append(calculo)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
plt.plot(x, y1, 'r')
plt.plot(x, y2, 'r')
plt.show()
uj5u.com熱心網友回復:
您可以通過創建 onclick 事件來做到這一點;單擊時它會占用滑鼠線并將它們用作偏移量...我認為這就是您要的嗎?雖然使用當前繪圖 x/y 限制,但它不會根據您單擊的位置顯示,因此我在繪圖配置中添加了這些限制。
import numpy as np
from math import sqrt
import matplotlib.pyplot as plt
import os
import matplotlib.image as mpimg
def onclick(event):
global ix, iy
ix, iy = event.xdata, event.ydata
plt.plot(x ix, y1 iy, 'r')
plt.plot(x ix, y2 iy, 'r')
plt.show()
fig.canvas.mpl_disconnect(cid)
return
B = 185
L = 250
W = (L-B)/6
D = (L/2)-L/4
x = np.linspace(-L/2, L/2, 500)
y1 = []
y2 = []
for X in x:
termo1 = sqrt((L**2 - 4*X**2) / (L**2 8*W*X 4*W**2))
termo2 = ((sqrt(5.5*L**2 11*L*W 4*W**2) * (sqrt(3)*B*B - 2*D*sqrt(L**2 2*W*L 4*W**2))
) / (sqrt(3)*B*L*(sqrt(5.5*L**2 11*L*W 4*W**2) - 2*sqrt(L**2 2*W*L 4*W**2))))
termo3 = 1 - sqrt((L*(L**2 8*W*X 4*W**2)) / (2*(L - 2*W)*X**2
(L**2 8*L*W - 4*W**2)*X 2*L*W**2 L**2*W L**2*W L**3))
calculo = B/2 * termo1 * (1-termo2 * termo3)
y1.append(calculo)
calculo = -B/2 * termo1 * (1-termo2 * termo3)
y2.append(calculo)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.set_xlim([-500,500])
ax.set_ylim([-500,500])
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
coords = []
cid = fig.canvas.mpl_connect('button_press_event', onclick)
plt.show()

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/451523.html
標籤:Python opencv matplotlib 图形 绘画
