如何基于半长轴、半短轴数组批量绘制椭圆?
批量绘制椭圆的解决方案
嗨!你现在只画出单个椭圆,是因为代码里仅用到了x[5]和y[5]这一组数据。要批量绘制所有配对的椭圆,只需要遍历x和y数组的每一组元素,逐个生成椭圆坐标并绘制就可以啦。
核心思路
- 保留你原有的半长轴
x和半短轴y的计算逻辑,这部分没问题 - 用循环遍历
x和y的每一对配对值 - 对每一对值,计算对应的椭圆坐标并调用
plt.plot()绘制 - 添加样式区分(比如透明度),同时设置等比例坐标轴避免椭圆变形
修改后的完整代码
import numpy as np import pandas as pd import math as m import matplotlib.patches as patches import matplotlib.pyplot as plt x1=6.5 #Approach distane measurement point y1=0.45 #Lateral distance measurement point Nx=np.linspace(80,60,10) Ny=np.linspace(80,60,10) c=20 # 计算半长轴数组x a=(10**(Nx/c)) b=(10**(86/20)) x=x1*(a/b) #semi major axis # 计算半短轴数组y a=(10**(Ny/c)) b=(10**(83/20)) y=y1*(a/b) #semi minor axis resolution = 1000 t = np.linspace(0, 2*np.pi, resolution) # 循环遍历每一组x和y的配对值,批量绘制椭圆 for xi, yi in zip(x, y): # 原代码旋转角度为0,这里简化计算;如果需要旋转,保留你的旋转逻辑即可 xr = xi * np.cos(t) yr = yi * np.sin(t) # 添加透明度避免椭圆重叠看不清 plt.plot(xr, yr, alpha=0.7) # 设置等比例坐标轴,防止椭圆被拉伸变形 plt.axis('equal') # 显示图形 plt.show() print(x)
额外优化提示
- 如果需要给每个椭圆添加标签或不同颜色,可以在循环里加入
label参数,最后调用plt.legend()显示图例 - 若需要旋转椭圆,替换循环里的坐标计算为你原有的旋转逻辑即可(比如旋转45度):
angle = m.radians(45) xr = xi * np.cos(t) * np.cos(angle) - yi * np.sin(t) * np.sin(angle) yr = yi * np.sin(t) * np.cos(angle) + xi * np.cos(t) * np.sin(angle)
这样就能一次性画出所有配对的椭圆啦!
内容的提问来源于stack exchange,提问作者Mala Pokhrel
相关产品推荐
相关产品推荐

