用Manim标出在图形上的指定位置

news2024/9/27 18:29:12

用Manim标出在图形上的指定位置

        在数据可视化和数学演示中,将数据点与坐标系中的轴连接起来对于理解和分析数据的关系至关重要。通过绘制从坐标轴指向特定点的线,可以直观地展示数据点在二维空间中的位置。这种方法在多种场景下都具有重要意义,如函数图像的分析、几何图形的构造,以及在教育场合中帮助学生理解概念。

        使用 Manim 库中的 get_lines_to_point 方法,用户可以轻松地实现这种可视化。这一方法允许从坐标系的 x 轴和 y 轴向指定的点(通常以二维坐标表示)绘制线条。通过此方法,用户不仅能够指定目标点的坐标,还可以调整线条的颜色、粗细以及透明度等属性,以增强视觉效果。

        这种连接线的绘制可以帮助观众更好地理解数据的相关性。例如,在函数曲线的旁边绘制指向特定点的线,可以清晰地展示该点的 x 和 y 值,增强信息的传达。同时,这种可视化还可以用于图表的标注、数据的强调,或是演示复杂理论时的辅助工具,增强演示的直观性和吸引力。通过这种方式,数学和科学的概念变得更加生动,易于理解。

1.为传递的图形创建位置正确的标签,并带有一个可选的点

get_graph_label(graph, label='f(x)', x_val=None, direction=array([1., 0., 0.]),
 buff=0.25, color=None, dot=False, dot_config=None)

 get_graph_label 是一个用于在图形中标记函数的图例的函数。其参数含义如下:

  • graph: 需要标记的图形或函数对象,通常是你想要对其添加标签的图形。

  • label: 用于显示的标签字符串,默认为 'f(x)',可以修改为所需的任意字符串。

  • x_val: 可选参数,表示在 x 轴上的特定值。如果提供这个值,标签将会在该点处进行标记。

  • direction: 一个数组,指定标签的放置方向。默认值为 [1., 0., 0.],表示标签将沿着 x 轴的方向放置。

  • buff: 标签与 graph 之间的缓冲距离,默认为 0.25。这个参数可以用于调整标签与图形的间距。

  • color: 标签的颜色,可以是任何有效的颜色值(如字符串、RGB 值等)。如果为 None,则使用默认颜色。

  • dot: 一个布尔值,指示是否在标签旁添加一个小点。默认为 False

  • dot_config: 如果 dot 为 True,可以用此参数提供小点的配置(如颜色、大小等)。

这个函数通常用于数据可视化,帮助用户更易于识别和理解图形内容。

示例:
from manim import *
class GetGraphLabelExample(Scene):
    def construct(self):
        ax = Axes(
            x_range=[-PI, 3*PI,PI/2], 
            y_range=[-1, 3], 
            x_length=4*PI,
            y_length=4
        )
        """
        
         # 设置 x 轴标签和字体大小  
        a11=ax.x_axis.set_tick_labels([  
            MathTex(r"-\pi"),   
            MathTex(r"\frac{-\pi}{2}"),
            MathTex(r"0"),
            MathTex(r"\frac{\pi}{2}"),   
            MathTex(r"{\pi}"), 
            MathTex(r"\frac{3\pi}{2}"),
            MathTex(r"{2\pi}") ,
            MathTex(r"\frac{5\pi}{2}"),
            MathTex(r"{3\pi}")
        ])  
        
        # 不设置底部默认标签  
        ax.x_axis.label_font_size = 0.4 
        """
        
        sin = ax.plot(lambda x: np.sin(x), color=PURPLE_B)
        #.scale(0.95)
        
        
        label = ax.get_graph_label(
            graph=sin,
            label= MathTex(r"\frac{\pi}{2}"),
            x_val=PI / 2,
            dot=True,
            direction=UR,
        )


        self.add(ax,sin, label)

 运行结果:

示例2:

以下是一个使用 Manim 的示例程序,绘制函数 y=x^{2} 的图像,并在 x=2 的位置标记标签。

from manim import *  

class ParabolaLabelExample(Scene):  
    def construct(self):  
        # 创建坐标系  
        ax = Axes(  
            x_range=[-3, 3, 1],  # x轴范围  
            y_range=[-1, 10, 1],  # y轴范围  
            x_length=6,  # x轴长度  
            y_length=5,  # y轴长度  
        ).add_coordinates()  

        # 绘制 y = x^2 函数  
        parabola = ax.plot(lambda x: x**2, color=BLUE)  

        # 获取图形标签  
        label = ax.get_graph_label(  
            graph=parabola,  
            label=MathTex("y=x^2"),  # 标签内容  
            x_val=2,        # x = 2 位置  
            dot=True,       # 在标签位置绘制一个点  
            direction=UR,   # 标签方向  
        )  

        # 绘制 y = x^2 在 x = 2 处的点  
        point = Dot(ax.c2p(2, 4), color=YELLOW)  # 点 (2, 4)  

        # 添加坐标系、抛物线、标签和点到场景中  
        self.add(ax, parabola, label, point)  

 在这个代码中:

  • 创建了一个坐标系。
  • 绘制了函数 y=x^{2}
  • 在 x=2处获取了标签,并在该点绘制了一个点。

运行结果:

 2.成水平线

get_horizontal_line(point, **kwargs)

 get_horizontal_line(point, **kwargs) 是 Manim 中用于生成水平线的函数。具体来说,它绘制一条通过给定点的水平线。以下是对这个函数的详细解释:

参数
  1. point:

    • 这是一个 2D 坐标(通常使用 c2p(x, y) 生成的),决定了水平线的起始位置。水平线会通过这个点水平延伸。
  2. kwargs:

    • 这表示函数接受的其他可选参数。kwargs 通常用于传递额外的属性,如颜色 (color)、线宽 (stroke_width)、透明度 (opacity)等。例如,你可以设置线的颜色为红色、透明度为0.5等。
返回值

该函数返回一个 Manim 中的 Line 对象,表示生成的水平线。

示例 :
from manim import *  

class HorizontalLineExample(Scene):  
    def construct(self):  
        # 创建坐标系  
        ax = Axes().add_coordinates()
            #ax = Axes(x_range=[-3, 3, 1], y_range=[-2, 2, 1])  
        
        # 绘制水平线,通过(1, 1)点  
        p01=ax.c2p(1, 1)
        horizontal_line = ax.get_horizontal_line(p01, color=RED) 
        d01=Dot(p01)
    
        point = ax.c2p(-4, 1.5)

        dot = Dot(point)
        line = ax.get_horizontal_line(point, line_func=Line)

        self.add(ax, horizontal_line, d01,line, dot)

运行结果:

 3.综合实现——坐标系的轴向给定的点绘制线

get_lines_to_point 是 Manim 中 Axes 类的一个方法,用于从坐标系的轴向给定的点绘制线。

函数原型
get_lines_to_point(point, **kwargs) 
参数
  1. point:

    • 类型: np.ndarraytuplelist
    • 描述: 这个参数表示目标点的坐标,你想从坐标轴绘制线到这个点。通常这个点是以二维坐标的形式传递,例如 [x, y]
  2. kwargs (可选参数):

    • 这个参数允许你传递额外的关键字参数,以自定义绘制的线条。这些关键字参数通常是 Matplotlib 画线方法的参数,包括:
      • color: 线的颜色。
      • stroke_width: 线的宽度。
      • opacity: 线的透明度等属性。
返回值
  • 返回值通常是一个包含线对象的列表,这些线对象是从坐标轴(例如 x 轴和 y 轴)延伸到指定点的。
示例:
from manim import *  

class GetLinesToPointExample(Scene):  
    
    def construct(self):  
        # 创建坐标系,指定范围  
        ax = Axes(  
            x_range=[-3, 3, 1],  # x轴范围  
            y_range=[-1, 10, 1],  # y轴范围  
            x_length=6,  # x轴长度  
            y_length=5,  # y轴长度  
        )
        ax.add_coordinates()     
        # 创建点  
        dot = Dot(ax.c2p(2, 4), color=YELLOW)  

        # 获取从坐标系到点的线  
        lines_1 = ax.get_lines_to_point(dot.get_center(), stroke_width=10 , color=GREEN) 
        
        parabola = ax.plot(lambda x: x**2, color=BLUE)  

        # 获取图形标签  
        label = ax.get_graph_label(  
            graph=parabola,  
            label=MathTex(r"\begin{matrix}x=2\\ y=4\end{matrix}"),  # 标签内容  
            x_val=2,        # x = 2 位置  
            color=RED,
            dot=True,       # 在标签位置绘制一个点  
            direction=RIGHT,   # 标签方向  
        )  

        # 添加坐标系、点和线到场景  
        self.add(ax,label,parabola, dot, lines_1)  

运行结果: 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1980861.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

虚拟机基础配置

基础配置: 挂载、软件仓库、网络配置、主机名、本地解析、关闭防火墙、关闭SELinux RHEL9 1.挂载 2.开机自启 3.仓库 4.网卡显示名称设置为ethx 注:/etc/NetworkManager/system-connections/为rhel9中的网络配置文件 5.设置IP地址,主机名…

虚实结合的智慧农业虚拟仿真实训室建设方案

一、智慧农业虚拟仿真实训室概述 当前,农业领域正经历着深刻的变革,物联网、大数据、云计算、人工智能等技术的广泛应用,为农业生产提供了精准、高效、可持续的解决方案。然而,传统农业教育往往受限于地域、季节、资源等因素&…

R语言论文插图模板第1期—折线图

在我出的Matlab相关内容下,常常有人问,有没有R语言版本,有没有Python版本,有没有Origin版本…… 以前觉得,选择一个软件,然后用到极致,便足够了。 但实际工作后,发现大家都是哪个软…

【Python系列】Python获取 Excel 文件的行数

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

顶底预测 反转指标 文华财经指标公式源码 九稳量化系统 好用的期货指标公式顶底预测 期货指标公式精准买卖点无滞后顶底预测

我觉得期货市场就是一个战场的翻版。 以我多年的交易经验,盈利加仓符合顺势原理,成功率较高。 在具体交易时,都是先看技术指标,后找基本面辅助。 震荡行情对于趋势交易者一直是个难题。 九稳量化交易系统 是一套高胜率策略趋势…

2023华为od机试C卷【最富裕的小家庭】Python实现

思路: def main():Num int(input())#获取成员数#获取金钱列表,为了1对应100,我们添加一个索引为0对应的值为0Moneys list(map(int,input().split()))#获取金钱输入Moneys.insert(0,0)#成员-金钱映射relationship {}for i in range(1,Num1)…

基于多源夜间灯光数据制作的近30年全球城市范围数据(1992-2020 )

全球城市范围年度数据集(1992-2020 ) 数据介绍 通过长时间序列了解全球城市化的时空动态对于实现可持续发展目标越来越重要。通过融合多源夜光观测数据创建的统一夜光(NTL)时间序列复合数据为描述和了解全球城市动态提供了长期、一…

适合药企使用的药物研发项目管理软件有哪些?

瑞杰 SuperProject 医药研发项目管理系统 瑞杰 SuperProject 医药研发项目管理系统,是由国内知名的医药研发项目管理系统供应商 - 北京瑞杰智能科技有限公司自主研发。全面支持医药研发、医疗器械研发、基因研发等生命健康领域的研发过程管控。 了解瑞杰 SuperProj…

“八股文”在实际工作中的角色:助力、阻力还是空谈?

目录 “八股文”在实际工作中的角色:助力、阻力还是空谈? 一、引言 二、“八股文”的起源与目的 2.1、助力:扎实的基础和关键时刻的救命稻草 2.2、阻力:脱离实际的高压和不切实际的预期 2.3、空谈:对工作能力的误…

RTSP系列四:RTSP Server/Client实战项目

RTSP系列: RTSP系列一:RTSP协议介绍-CSDN博客 RTSP系列二:RTSP协议鉴权-CSDN博客 RTSP系列三:RTP协议介绍-CSDN博客 RTSP系列四:RTSP Server/Client实战项目-CSDN博客 目录 一、RTSP Server实战项目 1、准备 2、…

Model Counting 2024 Public Instance Track 1 3600s测试结果

测试求解器:SharpSAT-TD与SharpSATTD-CH 3600s测试结果 测试结果图 测试数据001-051 测试数据053-101 测试数据103-151 测试数据153-199

两垂直线斜率乘积为-1的证明

如上图所示,直线L1和直线L2相互垂直,求证L1和L2的斜率。 求证过程如下: 设A点坐标为,B点坐标为,C点坐标为, 可知直线L1的斜率为:,直线L2的斜率为:

科普文:微服务之微服务改造【无状态token】JWT-token

一、什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519). 该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。 JWT的声明一般被用来在身份提供者…

PayPal为什么会封号?PayPal会关联吗

在做跨境电商的卖家,多多少少都会听到或者使用过PayPal。PayPal作为一家海外知名的支付公司,在全球拥有4亿的用户体量。在欧美地区使用PayPal成为一种主流支付方式,PayPal同时也是多家电商平台还有独立站的主流支付方式。正因为如此&#xff…

【C++ STL】stackqueue

文章目录 stack&queue1. 介绍1.1 stack1.2 queue 2. 接口2.1 stack2.2 queue 3. OJ3.1 最小栈3.2 验证栈序列3.3 逆波兰表达式求值3.4 用栈实现队列3.5 用队列实现栈 4. 模拟实现4.1 stack4.2 queue stack&queue 1. 介绍 1.1 stack 栈(Stack)…

IP探针双端源码

源码耗费两年半的制作过程 将源码上传至你的服务器或你的主机 可以对接其他东西或者网站其他语言 使用方法 1.参数使用 http://域名/sc.php?id这是生成端 http://域名/sc1.php?id这是生成端生成的链接可以跳转链接 http://域名/ck.php?id这是查看IP 生成端,生成完…

“微软蓝屏”事件敲响网络安全的警钟

文章目录 前言一、对网络安全的警醒二、我们如何应对?总结 前言 “微软蓝屏”事件是一次由微软合作伙伴CrowdStrike的终端安全产品更新与操作系统内核冲突导致的全球性技术故障。这一事件不仅影响了多个国家的航空、银行、金融、零售、餐饮等多个行业,还…

游泳馆管理小程序的设计

管理员账户功能包括:系统首页,个人中心,会员管理,场馆类型管理,泳池类型管理,饮食类型管理,场馆信息管理,泳池信息管理,系统管理 微信端账号功能包括:系统首…

美国非农数据低迷引发货币波动

本周,全球外汇市场经历了剧烈波动,主要货币对在美国7月非农就业报告表现疲软的影响下展现出多样化的市场反应。美元指数跌至五个月低点 美国7月非农就业数据意外低于预期,仅增加11.4万个就业岗位,失业率上升至4.3%,加剧…

UE蓝图(一)——自定义事件、函数与宏

自定义事件、函数与宏是UE蓝图中实现功能的三种方式,本文对这三种方式的特点与使用场景进行总结 文章目录 自定义事件函数宏进阶触发与调用函数的访问权限纯函数(Pure function) 参考资料 自定义事件 事件(Events) 是从游戏性代码中调用的节点,其使得蓝…