Manim实现在坐标轴上添加元素和获取元素

news2024/12/25 14:47:10

Manim实现在坐标轴上添加元素和获取元素

1.坐标轴上获取元素

构造函数:

_get_axis_label(label, axis, edge, direction, buff=0.1)

函数 _get_axis_label 旨在为图形表示中的给定轴生成和定位标签(通常用于绘图或数学上下文中,可能是在某个创建动画或可视化的库内)。以下是该函数及其参数的详细说明:

参数:

  1. label (float | str | Mobject):

    • 这是要在轴上显示的标签内容,可以是数字(浮点数)、字符串或 Mobject(可能是用于创建数学对象的类)。如果提供的是字符串或浮点数,默认将其转换为 MathTex 对象,通常用于渲染数学表达式。
  2. axis (Mobject):

    • 该参数指定标签要附加到的轴。Mobject 类型表示这是一个图形化的轴表示。
  3. edge (Sequence[float]):

    • 这是一个浮点数序列(如列表或元组),定义标签应添加到的轴的边缘。例如,它可以指定将标签放置在轴的右侧(表示为 RIGHT)。
  4. direction (Sequence[float]):

    • 此参数允许进一步调整标签的位置。可以用于相对轴轻微移动标签。
  5. buff (float):

    • Buff 表示标签与轴线之间的距离(或缓冲空间)。默认值为 0.1,可以调整以提供更多或更少的空间。

 _get_axis_label 方法通常是 Manim 源代码中的一个内部方法,可能不属于公共 API,因此不建议直接使用。相反,你应该使用 Manim 提供的公共方法 get_x_axis_label() 和 get_y_axis_label() ,这样可以避免使用内部实现,并确保代码在未来的 Manim 更新中仍然有效。

示例:

from manim import *  

class SimpleAxis001(Scene):  
    def construct(self):  
        # 创建坐标轴  
        axes = Axes(  
            x_range=[0, 4, 1],  # x轴范围和步长  
            y_range=[0, 16, 4],  # y轴范围和步长  
            axis_config={"color": BLUE},  # 坐标轴颜色  
        )  
        
        # 添加坐标轴到场景  
        self.add(axes)  

        # 创建数据点 (0, 0), (1, 1), (2, 4), (3, 9), (4, 16)  
        points = [(x, x**2) for x in range(5)]  
        
        # 创建图形并添加到场景  
        graph = axes.plot(lambda x: x**2, color=YELLOW)  
        self.add(graph)  

        # 添加标签  
        x_label = axes.get_x_axis_label("X-axes",buff=0,)  
        y_label = axes.get_y_axis_label("Y-axes")  
        
        self.add(x_label, y_label)  

        # 添加标题  
        title = Text("简单的坐标图").to_edge(UP)  
        self.add(title)  

运行结果: 

 2.坐标轴上添加标签的函数

add_coordinates(*axes_numbers, **kwargs)[source]

 

add_coordinates 是 Manim 中一个用于在坐标轴上添加标签的函数,通常可以在绘制数学图形或函数图时使用。这个函数可以帮助你为坐标轴上的特定值添加注释或标签,使得图形更具可读性和解释性。

参数解释

  1. axes_numbers (Iterable[float] | None | dict[float, str | float | Mobject])

    • 这个参数可以是一个可迭代对象(如列表或元组),其中包含你希望添加坐标标签的数字。
    • 也可以是一个字典,键是坐标位置,值是对应的标签(字符串、数字或 Mobject)。
    • 如果它是 None,将不添加任何默认标签。
  2. kwargs (Any)

    • 这是一个可选参数,允许你传递额外的关键字参数,通常用于设置标签的样式,比如字体、颜色、大小等。

示例1:

from manim import *  

class AddCoordinatesExample01(Scene):  
    def construct(self):  
        # 创建坐标轴  
        ax = ThreeDAxes()
        x_labels = range(-4, 5)
        z_labels = range(-4, 4, 1)
        a=ax.add_coordinates(x_labels ,z_labels ,color=GREEN)  # default y labels, custom x & z labels
        b=ax.add_coordinates(x_labels,color=RED)  # only x labels
        self.add(a,b)

运行结果:

示例2: 

from manim import *  

class AddCoordinatesExample02(Scene):  
    def construct(self):  
        # 创建坐标轴  
        ax = Axes(x_range=[0, 7])
        x_pos = [x for x in range(1, 8)]

        # strings are automatically converted into a Tex mobject.
        x_vals = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
        x_dict = dict(zip(x_pos, x_vals))
        a=ax.add_coordinates(x_dict)
        self.add(a)

 代码分析:

  1. 创建坐标轴:

    ax = Axes(x_range=[0, 7]) 

    创建了一个 x 轴范围为0到7的坐标系。

  2. 创建 x 轴位置列表:

    x_pos = [x for x in range(1, 8)] 

    生成一个列表 x_pos,包含整数 1 到 7,代表每周的每一天。

  3. 字符串标签:

    x_vals = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"] 

    创建一个有七个元素的字符串列表 x_vals,每个元素对应星期几。

  4. 创建键值对字典:

    x_dict = dict(zip(x_pos, x_vals)) 

    使用 zip 函数将 x_pos 和 x_vals 配对,并转换为字典 x_dict,格式为 {1: "Monday", ..., 7: "Sunday"}

  5. 向坐标系添加坐标:

    a = ax.add_coordinates(x_dict) self.add(a) 

    尝试将这些字符串作为坐标添加到坐标系 ax 中。

 运行结果:

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

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

相关文章

PostgreSQL 15

一、安装前的准备 1、版本信息 操作系统CentOS 7.9.2009PostgreSQL 版本PostgreSQL 15-15.7 2、下载安装包 RPM Chart - PostgreSQL YUM Repositoryhttps://yum.postgresql.org/rpmchart/进入官网,找到相应版本 点击框选内容 依次进入下载页面,下载相…

ASUS/华硕幻15 2020 冰刃4 GX502L GU502L系列 原厂win10系统 工厂文件 带F12 ASUS Recovery恢复

华硕工厂文件恢复系统 ,安装结束后带隐藏分区,一键恢复,以及机器所有驱动软件。 系统版本:windows10 原厂系统下载网址:http://www.bioxt.cn 需准备一个20G以上u盘进行恢复 请注意:仅支持以上型号专用…

免费好用的 CI/CD 工具有哪些?

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab :https://gitlab.cn/install 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 更多关于极狐GitLab &a…

V.PS日本东京VPS详细测评

V.PS日本VPS怎么样?V.PS日本机房怎么样? V.PS在日本有东京和大阪两个机房都在运作VPS/云服务器,大阪机房的默认接入IIJ网络,日本东京机房的是日本软银网络,另外日本东京分两个系列,一个是Intel另外一个是AM…

【文件fd】深入理解重定向和缓冲区

目录 1.重定向 1.1dup2 2.缓冲区 2.1什么是缓冲区 2.2为什么存在缓冲区 2.3缓冲区的刷新策略 2.4查看源码​ 3.0/1/2 3.1 0/1/2是什么&为什么存在 3.2 2和1区别 3.3 2为什么存在 1.重定向 重定向的本质:是在内核中改变文件描述符表特定下标的内容和…

Flutter 插件之http(介绍、使用、二次封装)

背景 在我们日常开发过程中,经常会使用到网络请求,而在Flutter插件中,最常用的请求插件一共两个,分别是: 1、dio 2、http 其中dio我已经做过详细介绍了(post、get等请求、文件上传、请求重试等),这里就不做过多阐述,下面附上文章链接,如有需要可前往查看。 http…

「11月·西安」第十二届信息系统与计算技术国际会议(ISCTech 2024)

随着信息技术的飞速发展,信息系统与计算技术已成为推动社会进步与产业升级的重要力量。在这样的背景下,第十二届信息系统与计算技术国际会议(ISCTech 2024)的召开,无疑为全球专家学者搭建了一个交流思想、共享成果的高…

ProfiNet 转 CAN/CANopen 网关

一、功能概述 1.1 设备简介 本产品是 PN(Profinet)和 COE(CANopen)/CAN(自由口)网关,使用数据映射 方式工作。 本产品在 PN 侧作为 PN IO 从站,接西门子 PLC;在 COE 侧做为 COE 主站, 接 COE 设备,如伺服、变频器、…

漏洞挖掘 | edusrc记一次某中学小程序渗透测试

一、搜集渗透目标 现在的EDU挖web端的上分效率远不如小程序,因此这篇文章浅浅记录一次小程序的挖掘吧。如果各位大牛想要快速出洞,不妨跳过大学,学院等小程序,而重点关注小学、中学、幼儿园等,这些小程序的出洞率还是…

第L3周:机器学习|逻辑回归

本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 | 接辅导、项目定制 🚀 文章来源:K同学的学习圈子深度学习第J6周:ResNeXt-50实战解析 1.逻辑回归定义 逻辑回归(Logistic Re…

hive udf去掉map中的一个或者多个key

实现一个hive udf,可以将Map中的某一个或者多个key去掉,这里要继承GenericUDF 这个抽象类,然后Override evaluate这个函数即可,可以把执行这个udf前初始化的一些内容放在initialize方法内,比如参数的判断,函数的返回值类型等等。 代码写好之后,可以用如下方法创建这个函…

Golang之OpenGL(一)

使用OpenGL实现窗口中绘制三角形(纯色|彩色)、正方形(变色) 一、简单实现窗口绘制三角形二、绘制的多颜色三角形(基于 ‘ 简单实现窗口绘制三角形 ’ )1、在顶点着色器和片段着色器中添加了颜色的输入和输出…

【考研高数】反函数的那些事

在这里给同学们推荐来自「荒原之梦考研数学」网的三篇文章,分别是反函数的性质汇总,以及两道相关习题,有需要加强这部分练习的同学,可以长按下方二维码,在「荒原之梦考研数学」官网中打开对应的文章: 《反…

基于单片机的防火防盗报警系统设计

摘要: 该多功能防火防盗系统既具有根据环境温度和烟雾浓度进行火灾检测的功能,也有能对人体检测实现防盗的功能。多功能智能防火防盗控制系统的主控制器是 STC89C52 单片机,环境温度的检测采用 DS18B20 , MQ2 检测烟雾浓度&…

利用canvas 实现图片的标注,把标注像素点传入到后端

背景:我们有一个摄像的产品,拍照传统的水表盘面,我们需要框选水表读数,标注点传到后端,后端根据标注点自动去截取摄像表拍摄回来的图片,然后拿到大模型里面进行训练。由于同一只表拍摄的画面都是一样的&…

C语言之指针函数与函数指针

目录 1 前言2 函数指针与指针函数理解与区分函数指针指针函数 3 函数指针与指针函数常见用法函数指针指针函数 4 总结 1 前言 项目中时常遇到指正函数与函数指正的使用,时间一长容易出现概念混淆。 2 函数指针与指针函数理解与区分 函数指针 原型:返回…

React 项目中如何使用 easyPlayer-pro.js

目录 背景EasyPlayer.js H5播放器简单介绍EasyPlayer.js 简介EasyPlayer.js 功能说明:配置属性事件回调方法 下载 EasyPlayer.js引入使用重写webpack问题处理证清白最后 背景 项目中要使用 easyplayer-pro.js 播放视频,查了下资料,网上基本都…

Axure在数据可视化原型设计中的革新力量

在数据洪流与信息爆炸的当下,产品设计不再局限于界面的美观与功能的堆砌,而是更多地聚焦于如何高效地呈现与解读数据。Axure RP,作为原型设计领域的璀璨明星,正以其独特的魅力,引领着数据可视化原型设计的新风尚。本文…

【云原生】数据库忘记密码怎么办?

相信很多人都会遇到在虚拟机中忘记数据库密码的情况,想必大家都很苦恼,所以今天给大家来讲讲数据库忘记密码了如何修改密码再登录数据库!!! 1、关闭数据库服务 systemctl stop mariadb 2、执行MySQL 服务器在启动时跳…

【LeetCode】146.LRU页面置换

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…