Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何绘制一个有波基和正确方向角的椭圆?_Python_Geometry_Bokeh_Ellipse - Fatal编程技术网

Python 如何绘制一个有波基和正确方向角的椭圆?

Python 如何绘制一个有波基和正确方向角的椭圆?,python,geometry,bokeh,ellipse,Python,Geometry,Bokeh,Ellipse,我想画一个基于两个焦点f1和f2以及第三个点的椭圆。但是由于某些原因,我计算的给定角度的椭圆方向没有正确显示 我缺少一些基本的东西吗?为什么bokeh不以给定的pi/4角定向椭圆 下面是我的示例代码: import numpy as np from bokeh.io import output_notebook, show from bokeh.plotting import figure from bokeh.models import Range1d output_notebook() f

我想画一个基于两个焦点f1和f2以及第三个点的椭圆。但是由于某些原因,我计算的给定角度的椭圆方向没有正确显示

我缺少一些基本的东西吗?为什么bokeh不以给定的pi/4角定向椭圆

下面是我的示例代码:

import numpy as np
from bokeh.io import output_notebook, show
from bokeh.plotting import figure
from bokeh.models import Range1d
output_notebook()

f1 = np.array([0,0])
f2 = np.array([3,3])
point = np.array([1,3])

tools = "hover, box_zoom, undo, crosshair"
p = figure(tools=tools)
p.circle(f1[0], f1[1], radius = 0.05, alpha=0.5)
p.circle(f2[0], f2[1], radius = 0.05, alpha=0.5)
p.circle(point[0], point[1], radius = 0.05, color='red')

center = (f2 - f1)/2 + f1
print(center)

angle = np.arctan2((f2 - f1)[1], (f2 - f1)[0])
print(np.rad2deg(angle))
# minor axis
a = (np.linalg.norm(f2-point) + np.linalg.norm(f1-point))/2
# major axis
c = np.linalg.norm((f2 - f1)/2)
# b = np.sqrt(a**2 - c**2)/2
b = 0.2

p.circle(center[0], center[1], radius = 0.05, color='orange')
p.ellipse(x=center[0], y=center[1], width=2*a, height=2*b, angle=angle, fill_color="yellow", fill_alpha = 0.4)
p.x_range = Range1d(-2, 4)
p.y_range = Range1d(-2, 4)
show(p)

这是一个尚未解决的难题:


tl;dr:角度基本上使用屏幕像素比率,与数据范围比率不对应。在您的特定情况下,是工具栏和轴“挤压”了主绘图区域。如果将其移除,则该区域将完全呈正方形,且角度将正确。

这是一个尚未解决的难题:


tl;dr:角度基本上使用屏幕像素比率,与数据范围比率不对应。在您的特定情况下,是工具栏和轴“挤压”了主绘图区域。如果删除它们,则该区域将是完全方形的,角度将是正确的。

我遇到了类似的问题,并通过更改轴范围解决了它。这没有任何意义,但在本例中,椭圆在扩展y_范围时对齐,如下所示:

from
p.y_range = Range1d(-2, 4)

to
p.y_range = Range1d(-2, 4.35)

我有一个类似的问题,通过改变轴的范围来解决。这没有任何意义,但在本例中,椭圆在扩展y_范围时对齐,如下所示:

from
p.y_range = Range1d(-2, 4)

to
p.y_range = Range1d(-2, 4.35)