Я пытаюсь написать программу, которая анализирует двухмерные ферменные конструкции, используя метод конечных элементов.
Мне нужно нарисовать / поместить изображение треугольника в определенных координатах. Программа встроена в холст Tkinter. Вот пример того, что я хочу сделать: Изображение
Итак, как я могу нарисовать или поместить изображение треугольника по этой определенной координате, с определенным размером, используя matplotlib? Я надеюсь, что моя проблема ясна.
Редактировать: я пытался реализовать решение из этой публикации, но теперь я получаю что-то вроде этого: Изображение
Изображение увеличено и не имеет правильной координаты. Вот соответствующий раздел из моего кода:
root = Tk()
frame2 = LabelFrame(root)
frame2.grid(row=1,column=3,padx=50)
x = 0
y= 0
fig = Figure(figsize=(5, 4), dpi=100)
fig.add_subplot(111).plot(x,y)
fig.suptitle(t='Structure')
canvas = FigureCanvasTkAgg(fig, master=frame2) # A tk.DrawingArea.
canvas.draw()
canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)
toolbar = NavigationToolbar2Tk(canvas, frame2)
toolbar.update()
applyButton = Button(BCFrame, text='APPLY',font=("Verdana", 20), command = lambda: apply(NodeNoEntry.get(),dirr.get(),bc.get(),magnitudeEntry.get()))
applyButton.grid(row=1, column=4, rowspan=2, padx=20)
def apply(node,direct,bc,mag):
global fig
global canvas
global nodes
if node == '':
messagebox.showerror("Boundary Condition Error", "Couldn't add the boundary condition. ('Node Number' cannot be empty.)")
elif mag == '':
messagebox.showerror("Boundary Condition Error", "Couldn't add the boundary condition. ('Magnitude' cannot be empty.)")
else:
for nn,x,y in nodes:
if nn == int(node):
tx = x
ty = y
if direct == 'X':
ax = fig.gca()
ax.set_xlim(0,2)
ax.set_ylim(0,2)
imageFile = 'trianglex.png'
img = mpimg.imread(imageFile)
imgplot = ax.imshow(img)
transform = mpl.transforms.Affine2D().translate(tx,ty)
imgplot.set_transform(transform + ax.transData)
canvas.draw()
Когда я использую applyButton, он передает координаты узла, в котором я хочу создать треугольник.