如何使一个图表的Matplotlib滑块输出在另一个图表上添加标记

我有两个图,其中一个图具有一个滑块,该滑块可对连接到楔形物(三角形)的线的运动进行动画处理。另一个图是一个简单的x-y图。当我定义的20度楔形上的线的角度移动时,它所成的角度将显示在绘图上。我想在另一个图上在我的楔角和生成的线角位置绘制一个星星。如何将(x,y)数据传达给其他绘图?我在下面附加了图形和代码。因此,对于下面的图,楔形为20度,然后与之成直线为34.9度,我想在左图上以(x,y)=(20,34.9)绘制星形或实心圆。

import math
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation
from matplotlib.widgets import Slider  # import the Slider widget

def update(Beta):
    torad = np.pi/180
    y = findy(x3,Beta)
    betatext.set_text(r'$\beta = %.1f$' % Beta)
    y = [0,y]
    line.set_ydata(y)
    fig.canvas.draw_idle()      

def findy(x3,Beta):
    y = x3*np.tan(Beta * torad)
    return y

# ----------------
#  End of Defs
# ----------------

#General constants
torad = np.pi/180
todeg = 1/torad
beta = 40.
Wedge_Angle = 20.
xmax = 10
ymax = 10
axcolor = 'lightgoldenrodyellow'

# TBM constants
gam = 1.4
Mach = 3
tmax = 50
bmax = 92
Npts = 50

#Slider min max
s_min = 25
s_max = 45
s_init = 2

# Define Triangle points
x1 = 0
y1 = 0
x2 = xmax
y2 = y1
x3 = x2
y3 = x3*np.tan(Wedge_Angle * torad)
points = [[x1,y1],[x2,y2],[x3,y3]]

# Define x,y plot data (arbitrary)
t_tbm = [0,5,10,30,5]
b_tbm = [0,40,50,60,70]

# Define figure and rectangles
fig = plt.figure(figsize=(7,3))
rect1 = [0.1,0.1,0.4,0.8]
rect2 = [0.5,0.8]

##rect = [left,bottom,width,height].
rect1 = [0.1,0.2,0.35,0.6]
rectsl = [0.55,0.15,0.3,.03]

#Define Mach Numbers
M_list = [2.0]

# Add axis
ax1 = fig.add_axes(rect1,xlim=(0,tmax),ylim=(0,bmax))
ax2 = fig.add_axes(rect2,xmax),ymax))

# (Left Plot) Draw TBM Diagram for a variety of Mach numbers
ax1.plot(t_tbm,b_tbm,label=r"$M_1 = \,{}$".format(Mach if (Mach<50) else "\infty"))

## Axis arguments
ax1.set_xlabel(r"Flow Deflection Angle,$\theta$ ($^\circ$)")
ax1.set_ylabel(r"Shock Wave Angle,$\beta$ ($^\circ$)")
ax1.legend(loc=4,fontsize='x-small')
ax1.grid(True)
ax2.text(4,0.5,r'$\theta = %d$' % Wedge_Angle)

## Right Plot
# Draw the Triangle
polygon = plt.Polygon(points,facecolor='0.9',edgecolor='0.5')
plt.gca().add_patch(polygon)

# Draw the Line
x2 = x3
y2 = findy(x3,beta)
y = x3*np.tan(beta * torad)

line = plt.Line2D((x1,x2),(y1,y2))  
plt.gca().add_line(line)
betatext = ax2.text(1,9.0,r'$\beta = %.1f$' % beta)

#Plot slider
slider_ax = plt.axes(rectsl,facecolor=axcolor) 

# Now define slider info
svalue = Slider(slider_ax,'M',s_min,s_max,valinit=s_init,valfmt="%1.2f")
svalue.on_changed(update)

plt.show()

如何使一个图表的Matplotlib滑块输出在另一个图表上添加标记

预先感谢您的帮助

newer1106 回答:如何使一个图表的Matplotlib滑块输出在另一个图表上添加标记

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2958852.html

大家都在问