精华内容
下载资源
问答
  • 在画图作业中遇到这个问题,总结一下:通常怎么在python中画图?数据的处理、分析和可视化已经成为 Python 近年来最重要的应用之一。Python 在数据可视化方面拥有...它包含了大量的工具,你可以使用这些工具创建各种...

    在画图作业中遇到这个问题,总结一下:

    通常怎么在python中画图?

    数据的处理、分析和可视化已经成为 Python 近年来最重要的应用之一。Python 在数据可视化方面拥有很多功能强大的工具,Matplotlib就是其中的一个佼佼者。这是 Python 在科学领域中迅速发展的一个主要原因。

    简单来说,Matplotlib 是 Python 的一个绘图库。它包含了大量的工具,你可以使用这些工具创建各种图形,包括简单的散点图,正弦曲线,或者是三维图形。Python 科学计算社区经常使用它完成数据可视化的工作。

    如何使用Python绘制椭圆?

    首先使用两行代码引入Matplotlib扩展包:

    import matplotlib.pyplot as plt

    from matplotlib.patches import Ellipse

    第一行导入Matplotlib中的pyplot模块,在绘制各种图形(折线图,饼图,散点图)时都要导入这一行。

    第二行导入椭圆(ellipse)扩展包。在该扩展包中拥有一个Ellipse类,可以很容易地定义各种类型和斜率的椭圆。

    fig = plt.figure(0)

    ax = fig.add_subplot(111, aspect='equal')

    首先在这两行上创建空白画布,为后面的画图做准备。

    e = Ellipse(xy = (0,2), width = 1.81 * 2, height = 0.94 * 2, angle=27.6)

    ax.add_artist(e)

    我们在这里创建一个原点在(0,2),长半径为1.81,短半径为0.94,倾斜角为27.6的椭圆,然后将其添加到画布上。

    在创建Ellipse对象时,需要指定四个参数,分别是椭圆的圆心(x, y),长半轴的直径(1.81*2),短半轴的直径(0.94*2)和倾斜角27.6°

    e.set_facecolor("white")

    plt.xlim(-2, 2)

    plt.ylim(0.5, 3.5)

    ax.grid(True)

    plt.title("50% Probablity Contour - Homework 4.2")

    plt.show()

    这几行是对于图表的大致调整。首先将椭圆的颜色调整为白色,然后设定坐标轴的显示范围,开启网格显示模式,最后加上图表的标题,最后用plot.show()就可以显示了。

    完整代码:

    import matplotlib.pyplot as plt

    from matplotlib.patches import Ellipse

    fig = plt.figure(0)

    ax = fig.add_subplot(111, aspect='equal')

    e = Ellipse(xy = (0,2), width = 1.81 * 2, height = 0.94 * 2, angle = 27.6)

    ax.add_artist(e)

    e.set_facecolor("white")

    plt.xlim(-2, 2)

    plt.ylim(0.5, 3.5)

    ax.grid(True)

    plt.title("50% Probablity Contour - Homework 4.2")

    plt.show()

    展开全文
  • Python环境下使用opencv绘制椭圆,需要用到cv2.ellipse() 函数。下面一段示例程序就是函数在黑色背景下,绘制一个圆心在(260,240)、长轴170、短轴130、线宽为3的白色椭圆。import cv2import numpy as npimg=...

    在Python环境下使用opencv绘制椭圆,需要用到cv2.ellipse() 函数。

    下面一段示例程序就是用该函数在黑色背景下,绘制一个圆心在(260,240)、长轴170、短轴130、线宽为3的白色椭圆。import cv2

    import numpy as np

    img=np.zeros((512,512,3),np.uint8) #设置背景

    cv2.ellipse(img, (260, 240), (170, 130), 0, 0, 360, (255, 255, 255), 3) #画椭圆

    cv2.imshow("test",img) #显示

    cv2.waitKey(0) #按下任意键退出

    cv2.destroyAllWindows()

    cv2.ellipse()函数比较复杂,下面详细介绍一下涉及到的参数:

    函数原型:

    cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness, lineType, shift)

    其中每个参数代表意义如下:img:需要绘图的图像

    center:椭圆中心点坐标

    axes:椭圆尺寸(即长短轴)

    angle:旋转角度(顺时针方向)

    startAngle:绘制的起始角度(顺时针方向)

    endAngle:绘制的终止角度(例如,绘制整个椭圆是0,360,绘制下半椭圆就是0,180)

    color:线条颜色(BGR)

    thickness:线条粗细(默认值=1)

    lineType:线条类型(默认值=8)

    shift:圆心坐标点和数轴的精度(默认值=0)

    顺便介绍几个常用的绘图函数:

    1、画直线 cv2.line()

    cv2.line(img, Point pt1, Point pt2, color, thickness=1, line_type=8, shift=0)

    pt1,pt2分别代表直线的两个端点。

    2、画矩形 cv2.rectangle()

    cv2.rectangle(img, Point pt1, Point pt2, color, thickness=1, line_type=8, shift=0)

    pt1,pt2分别代表矩形的左上角点和右下角点。

    3、画圆 cv2.circle()

    cv2.circle(img, center, radius, color, thickness, lineType, shift)

    center,radius代表圆心和半径。

    展开全文
  • 我想知道如何使用公式ay2 bxy cx dy e = x2绘制椭圆轨道?我首先确定了a,b,c,d,e常数,现在我假设通过给出x值我将获得y,这将给出我想要的图形,但我不能通过使用matplotlib来做到这一点.如果你能帮助我,我真的很感激!...

    我想知道如何使用公式ay2 bxy cx dy e = x2绘制椭圆轨道?

    我首先确定了a,b,c,d,e常数,现在我假设通过给出x值我将获得y,这将给出我想要的图形,但我不能通过使用matplotlib来做到这一点.

    如果你能帮助我,我真的很感激!

    编辑:我在这里添加了代码.

    from numpy import linalg

    from numpy import linspace

    import numpy as np

    from numpy import meshgrid

    import random

    import matplotlib.pyplot as plt

    from scipy import optimize

    x = [1.02, 0.95, 0.87, 0.77, 0.67, 0.56, 0.44, 0.30, 0.16, 0.01]

    y = [0.39, 0.32, 0.27, 0.22, 0.18, 0.15, 0.13, 0.12, 0.12, 0.15]

    my_list = [] #It is the main list.

    b = [0] * len(x) # That is the list that contains the results that are given as x^2 from the equation.

    def fxn(): # That is the function that solves the given equation to find each parameter.

    global my_list

    global b

    for z in range(len(x)):

    w = [0] * 5

    w[0] = y[z] ** 2

    w[1] = x[z] * y[z]

    w[2] = x[z]

    w[3] = y[z]

    w[4] = 1

    my_list.append(w)

    b[z] = x[z] ** 2

    t = linalg.lstsq(my_list, b)[0]

    print 'List of list representation is', my_list

    print 'x^2, the result of the given equation is', b

    print '\nThe list that contains the parameters is', t

    fxn()

    t = linalg.lstsq(my_list, b)[0]

    print '\nThe constant a is', t[0]

    print 'The constant b is', t[1]

    print 'The constant c is', t[2]

    print 'The constant d is', t[3]

    print 'The constant e is', t[4]

    编辑:这是常数值:

    a = -4.10267300566

    b = 1.10642410023

    c = 0.39735696603

    d = 3.05101004127

    e = -0.370426134994

    解决方法:

    作为x的函数,y可以解决该问题

    问题是每个有效x有2个y值,而椭圆跨度x范围外没有(或想象)y解

    下面是3.5代码,sympy 1.0应该可以打印,list comps可能不会向后兼容到2.x.

    from numpy import linalg

    from numpy import linspace

    import numpy as np

    from numpy import meshgrid

    import random

    import matplotlib.pyplot as plt

    from scipy import optimize

    from sympy import *

    xs = [1.02, 0.95, 0.87, 0.77, 0.67, 0.56, 0.44, 0.30, 0.16, 0.01]

    ys = [0.39, 0.32, 0.27, 0.22, 0.18, 0.15, 0.13, 0.12, 0.12, 0.15]

    b = [i ** 2 for i in xs] # That is the list that contains the results that are given as x^2 from the equation.

    def fxn(x, y): # That is the function that solves the given equation to find each parameter.

    my_list = [] #It is the main list.

    for z in range(len(x)):

    w = [0] * 5

    w[0] = y[z] ** 2

    w[1] = x[z] * y[z]

    w[2] = x[z]

    w[3] = y[z]

    w[4] = 1

    my_list.append(w)

    return my_list

    t = linalg.lstsq(fxn(xs, ys), b)

    def ysolv(coeffs):

    x,y,a,b,c,d,e = symbols('x y a b c d e')

    ellipse = a*y**2 + b*x*y + c*x + d*y + e - x**2

    y_sols = solve(ellipse, y)

    print(*y_sols, sep='\n')

    num_coefs = [(a, f) for a, f in (zip([a,b,c,d,e], coeffs))]

    y_solsf0 = y_sols[0].subs(num_coefs)

    y_solsf1 = y_sols[1].subs(num_coefs)

    f0 = lambdify([x], y_solsf0)

    f1 = lambdify([x], y_solsf1)

    return f0, f1

    f0, f1 = ysolv(t[0])

    y0 = [f0(x) for x in xs]

    y1 = [f1(x) for x in xs]

    plt.scatter(xs, ys)

    plt.scatter(xs, y0, s=100, color = 'red', marker='+')

    plt.scatter(xs, y1, s=100, color = 'green', marker='+')

    plt.show()

    当上述内容在Spyder中运行时:

    runfile('C:/Users/john/mypy/mySE_answers/ellipse.py', wdir='C:/Users/john/mypy/mySE_answers')

    (-b*x - d + sqrt(-4*a*c*x - 4*a*e + 4*a*x**2 + b**2*x**2 + 2*b*d*x + d**2))/(2*a)

    -(b*x + d + sqrt(-4*a*c*x - 4*a*e + 4*a*x**2 + b**2*x**2 + 2*b*d*x + d**2))/(2*a)

    T6eUy.png

    生成的y值函数无处不在:

    f0(0.1), f1(0.1)

    Out[5]: (0.12952825130864626, 0.6411040771593166)

    f0(2)

    Traceback (most recent call last):

    File "", line 1, in

    f0(2)

    File "", line 1, in

    ValueError: math domain error

    In [7]:

    域错误需要try / execpt来“感觉”有效的x范围或更多的数学

    喜欢尝试/除了下面:(编辑为“关闭”绘图重新评论)

    def feeloutXrange(f, midx, endx):

    fxs = []

    x = midx

    while True:

    try: f(x)

    except:

    break

    fxs.append(x)

    x += (endx - midx)/100

    return fxs

    midx = (min(xs) + max(xs))/2

    xpos = feeloutXrange(f0, midx, max(xs))

    xnegs = feeloutXrange(f0, midx, min(xs))

    xs_ellipse = xnegs[::-1] + xpos[1:]

    y0s = [f0(x) for x in xs_ellipse]

    y1s = [f1(x) for x in xs_ellipse]

    ys_ellipse = y0s + y1s[::-1] + [y0s[0]] # add y start point to end to close drawing

    xs_ellipse = xs_ellipse + xs_ellipse[::-1] + [xs_ellipse[0]] # added x start point

    plt.scatter(xs, ys)

    plt.scatter(xs, y0, s=100, color = 'red', marker='+')

    plt.scatter(xs, y1, s=100, color = 'green', marker='+')

    plt.plot(xs_ellipse, ys_ellipse)

    plt.show()

    wRT7l.png

    编辑:将重复的起点添加到椭圆点列表的末尾以关闭绘图

    ys_ellipse = y0s + y1s[::-1] + [y0s[0]] # add y start point to end to close drawing

    xs_ellipse = xs_ellipse + xs_ellipse[::-1] + [xs_ellipse[0]] # added x start point

    P8Grs.png

    标签:python,matplotlib,orbit

    来源: https://codeday.me/bug/20191002/1843883.html

    展开全文
  • 我为它绕太阳运行的行星的(x,y,z)坐标生成了一堆数据.现在我想通过这些数据拟合椭圆.我试图做的:我基于五个参数创建了一个虚拟椭圆:半长轴&定义尺寸和偏差的偏心... (N =我绘制椭圆的数据点数)我计算这些虚拟点与...

    我为它绕太阳运行的行星的(x,y,z)坐标生成了一堆数据.现在我想通过这些数据拟合椭圆.

    我试图做的:

    我基于五个参数创建了一个虚拟椭圆:半长轴&定义尺寸和偏差的偏心率形状和三个旋转椭圆的欧拉角.由于我的数据并不总是以原点为中心,因此我还需要翻译需要额外三个变量(dx,dy,dz)的椭圆.

    一旦我用这八个变量初始化这个函数,我就得到了这个椭圆上的N个点. (N =我绘制椭圆的数据点数)

    我计算这些虚拟点与实际数据的偏差,然后使用一些最小化方法最小化该偏差,以找到这八个变量的最佳拟合值.

    我的问题在于最后一部分:最小化偏差并找到变量的值.

    为了最大限度地减少偏差,我使用scipy.optimize.minimize来尝试近似最佳拟合变量,但它只是做得不够好:

    我最好的一个看起来像是Here is an image,这是一个非常慷慨准确的初始猜测. (蓝色=数据,红色=适合)

    简而言之,我使用这个scipy函数:

    initial_guess = [0.3,0.2,0.1,0.7,3,0.0,-0.1,0.0]

    bnds = ((0.2, 0.5), (0.1, 0.3), (0, 2*np.pi), (0, 2*np.pi), (0, 2*np.pi), (-0.5,0.5), (-0.5,0.5), (-0.3,0.3)) #reasonable bounds for the variables

    result = optimize.minimize(deviation, initial_guess, args=(data,), method='L-BFGS-B', bounds=bnds, tol=1e-8) #perform minimalisation

    semi_major,eccentricity,inclination,periapsis,longitude,dx,dy,dz = result["x"]

    要最小化此错误(或偏差)功能:

    def deviation(variables, data):

    """

    This function calculates the cumulative seperation between the ellipse fit points and data points and returns it

    """

    num_pts = len(data[:,0])

    semi_major,eccentricity,inclination,periapsis,longitude,dx,dy,dz = variables

    dummy_ellipse = generate_ellipse(num_pts,semi_major,eccentricity,inclination,periapsis,longitude,dz,dy,dz)

    deviations = np.zeros(len(data[:,0]))

    pair_deviations = np.zeros(len(data[:,0]))

    # Calculate separation between each pair of points

    for j in range(len(data[:,0])):

    for i in range(len(data[:,0])):

    pair_deviations[i] = np.sqrt((data[j,0]-dummy_ellipse[i,0])**2 + (data[j,1]-dummy_ellipse[i,1])**2 + (data[j,2]-dummy_ellipse[i,2])**2)

    deviations[j] = min(pair_deviations) # only pick the closest point to the data point j.

    total_deviation = sum(deviations)

    return total_deviation

    (我的代码可能有点乱,而且效率低,我是新手)

    我可能在编码中犯了一些逻辑错误,但我认为它归结为scipy.minimize.optimize函数.我不知道它是如何工作的以及对它的期望.我还建议在处理这么多变量时尝试马尔可夫链蒙特卡罗.我确实看了一下司仪,但现在它已经超出了我的脑海.

    展开全文
  • I'm working on Python 2.7. I have to define some Areas of Interest (AoI) on a picture. Basically, I'm trying to do this drawing an ellipse (or more) on a specific part of the picture and to get the co...
  • I'm working on Python 2.7. I have to define some Areas of Interest (AoI) on a picture. Basically, I'm trying to do this drawing an ellipse (or more) on a specific part of the picture and to get the co...
  • //绘制椭圆 DrawEllipse(atomImage, 90); DrawEllipse(atomImage, 0); DrawEllipse(atomImage, 45); DrawEllipse(atomImage, -45); //绘制圆心 DrawFi1ledCirc1e(atomImage, Point(WINDOW_WIDTH / 2,WINDOW_WIDTH /...
  • 简介学习使用OpenCV画几何图形,主要的函数为:cv2.line(),cv2.circle(),cv2.rectangle(),cv2.ellipse(),cv2.putText等。具体释义可以使用help(cv2.putText)查看。import numpy as npimport cv2#Create a black ...
  • 成果如下:初学turtle时所画的这只柯基,由于对turtle中灵活强大的circle()函数理解和应用不够自如,​​​​​​​自定义的画弧函数化简为繁了。绘制对象的关键坐标点确实需要反复尝试,在绘制这样一幅turtle画作时...
  • 1. 中文乱码和椭圆先看python代码和结果:import matplotlibfrom matplotlib.patches import Ellipse, Circleimport matplotlib.pyplot as pltfig, ax = plt.subplots()zhfont1 = matplotlib.font_manager....
  • 将A,B和C的x和y坐标代入椭圆方程将给出三个方程。你需要拿出第4个。您可以自由选择在游戏环境中有意义的第四点。这是一个SymPy代码片段,它根据A,B和C以及参数“f”将x值分配给椭圆的中心。def e3(p1, p2, p3, f):...
  • 原博文2018-11-06 16:26 −源自:https://blog.csdn.net/petermsh/article/details/78458585 1. 调用包函数绘制圆形Circle和椭圆Ellipse from matplotlib.patches import Ellipse, Circle import ma...025291相关...
  • Python利用Matplot绘制椭圆

    千次阅读 2019-06-14 11:21:03
    def get_ellipse(e_x, e_y, a, b, e_angle):...利用上面的函数,输入参数依次为(椭圆中心x轴坐标,椭圆中心y轴坐标,半长轴长度,半短轴长度,椭圆长轴与x轴夹角(deg)),通过plot(x,y),即可实现绘制椭圆方法。
  • 成果如下:初学turtle时所画的这只柯基,由于对turtle中灵活强大的circle()函数理解和应用不够自如,​​​​​​​自定义的画弧函数化简为繁了。绘制对象的关键坐标点确实需要反复尝试,在绘制这样一幅turtle画作时...
  • 源自:https://blog.csdn.net/petermsh/article/details/784585851. 调用包函数绘制圆形Circle和椭圆Ellipsefrom matplotlib.patches importEllipse, Circleimportmatplotlib.pyplot as pltfig=plt.figure()ax= fig....
  • 源自:https://blog.csdn.net/petermsh/article/details/784585851. 调用包函数绘制圆形Circle和椭圆Ellipsefrom matplotlib.patches import Ellipse, Circleimport matplotlib.pyplot as pltfig = plt.figure()ax =...
  • python 绘制椭圆

    千次阅读 2020-11-09 17:07:18
    调用matplotlib的包函数 代码 from matplotlib.patches import Ellipse import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) ell1 = Ellipse(xy = (0.0, 0.0), width = 4, height = 8, ...
  • 作为x的函数,y可以解决该问题问题是每个有效x有2个y值,而椭圆跨度x范围外没有(或想象)y解下面是3.5代码,sympy 1.0应该可以打印,list comps可能不会向后兼容到2.x.from numpy import linalgfrom numpy import ...
  • 原博文2018-11-06 16:26 −源自:https://blog.csdn.net/petermsh/article/details/78458585 1. 调用包函数绘制圆形Circle和椭圆Ellipse from matplotlib.patches import Ellipse, Circle import ma...025317相关...
  • 广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000... 没错,算出来的确简单 关键要用python做思路:将椭圆形划分为若干个矩形 ? 然后算矩形面积 最后把各个...
  • python绘制圆和椭圆

    千次阅读 2018-11-06 16:26:00
    源自:... 1. 调用包函数绘制圆形Circle和椭圆Ellipse from matplotlib.patches import Ellipse, Circle import matplotlib.pyplot as plt fig = plt.figure() ...
  • python函数绘制简单的曲线图像 样例一: import matplotlib import matplotlib.pyplot as plt import numpy import math from pylab import * x = numpy.linspace(-4,4,200) f1 = numpy.power(10,x) f2=numpy.power...
  • Python工程图绘制编程函数基本应用源码# -*- coding:UTF8 -*-#首先在犀牛5.0界面的命令行里面输入EditPythonScript#在出来的界面复制粘贴这些代码#把没用的注释掉,一个个试!一行行的慢慢自己看import ...
  • https://www.cnblogs.com/liming19680104/p/12267467.html圆形的绘制 :OpenCV中使用circle(img,center,radius,color,thickness=None,lineType=None,shift=None)函数绘制圆形import cv2import numpy as np...
  • 使用matplotlib.patches.Arc可以使半椭圆形,只需指定关键字theta1=0.0, theta2=180.0(或90至270)。 我写了一个名为arcs的包装函数,用于制作Arc s的散点图。 它使用PatchCollection,应该有更好的性能并启用...
  • Python学习笔记——opencv绘制椭圆

    万次阅读 2018-06-26 19:26:24
    Python环境下使用opencv绘制椭圆,需要用到cv2.ellipse() 函数。下面一段示例程序就是函数在黑色背景下,绘制一个圆点在(260,240)、长轴170、短轴130、线宽为5的白色椭圆。import cv2 import numpy as np ...
  • //绘制椭圆 DrawEllipse(atomImage, 90); DrawEllipse(atomImage, 0); DrawEllipse(atomImage, 45); DrawEllipse(atomImage, -45); //绘制圆心 DrawFi1ledCirc1e(atomImage, Point(WINDOW_WIDTH / 2,WINDOW_WIDTH /...
  • 原标题:Python matplotlib基础绘图函数示例Pyplot基础图标函数函数说明plt.plot(x,y,fmt,…)绘制一个坐标图plt.boxplot(data,notch,position)绘制一个箱形图plt.bar(left,height,width,bottom)绘制一个条形图plt....
  • 在skimage包中,绘制图形的是draw模块,不要和绘制图像搞混了。1、画线条函数调用格式为:skimage.draw.line(r1,c1,r2,c2)r1,r2: 开始点的行数和结束点的行数c1,c2: 开始点的列数和结束点的列数返回当前绘制图形上...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,049
精华内容 1,219
关键字:

python用函数绘制椭圆

python 订阅