gpt4 book ai didi

python - 绘图 : Plot a curve with ticks on one side

转载 作者:太空宇宙 更新时间:2023-11-04 09:34:42 25 4
gpt4 key购买 nike

我可以使用 matplotlib.pyplot 中的 plot() 函数来绘制一侧有刻度的曲线吗?:

Weather fronts

最佳答案

升级基于答案here我可以扩展示例:

def f(x): return x,  x * np.exp(-x*x)

def get_parameters(x,y):
xp = 0.5*(x[1:nx] + x[0:nx-1]) # the points between
yp = 0.5*(y[1:nx] + y[0:nx-1])
dy = np.diff(y); dx = np.diff(x) # the gradient
nn = 40*np.sqrt(dx*dx + dy*dy) # nn=norm; 40 = empirical hack for the normal shift
dx = dx/nn; dy = dy/nn # the components of the normals
alpha = 180*np.arctan(dy/dx)/np.pi # the slope angel to the normal
return xp,yp,dx,dy,alpha

nx = 20;
ip = np.linspace(0,1,nx)
xr,yr = f(3*ip-0.5) # red front line
xb,yb = f(3*ip-0.5); yb = 0.7*yb -0.3 # blue front line

xpb, ypb, dx, dy, alphaB = get_parameters(xb,yb) # red points between
xpr, ypr, _, _, alphaR = get_parameters(xr,yr) # blue points between

plt.style.use('fast')
fig, ax0 = plt.subplots(figsize=(20,20))
plt.plot(xr,yr, c='r', lw=5, label='warm front')
plt.plot(xb,yb, c='b', lw=5, label='cold front')

for j in range(nx-1):
#--- set the blue markers ---
marker_size_B = 900
plt.scatter(xpb[j]-dy[j], ypb[j]+dx[j],
s=marker_size_B, c='b', marker=(3, 0, alphaB[j]) )

#--- set the red markers ---
marker_size_R=0.05
halfR = mpl.patches.Wedge((xpr[j], ypr[j]), marker_size_R, theta1=0+alphaB[j], theta2=180+alphaB[j], color='r')
ax0.add_artist(halfR)
plt.legend(prop={'size': 20})
ax0.set_aspect('equal'); plt.grid(); plt.margins(0.1);plt.show()

enter image description here

标记的密度可以用 marker_every 控制.

关于python - 绘图 : Plot a curve with ticks on one side,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54245152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com