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

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 中。

 运行结果:

  • 16
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yasen.M

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值