商道如狼道 发表于 2024-6-12 11:34:06

manim边学边做--DecimalNumber

DecimalNumber是Mobjects分类中专门用来显示数字的一个class。
它的主要功能是提供一种展示数字的方式,包括整数和浮点数。
https://cdn.nlark.com/yuque/0/2024/png/2235414/1718086362131-aecb909c-8830-451b-a57d-24f4cc773462.png#averageHue=%23fdf6f5&from=paste&height=814&id=u05fb03f5&originHeight=814&originWidth=684&originalType=binary&ratio=1&rotation=0&showTitle=false&size=38482&status=done&style=none&taskId=u28635b9e-7485-4c12-8ffe-623b2f35a53&title=&width=684
DecimalNumber在manim各个模块中的位置如上图中所示。
1. 主要参数

虽然只是数字的展示,但是manim也提供了丰富的参数,可以在不同的场景中用不同的展示方式。
此中重要且常用的参数有:
参数名称类型说明numberfloat要显示的数字num_decimal_placesint生存的小数位数,自动四舍五入include_signbool时间包含正负号group_with_commasbool是否用逗号分隔数字,以进步可读性show_ellipsisbool当一个数字被四舍五入截断时,是否用省略号表现unitstr数值的单元unit_buff_per_font_unitfloat数值和单元之间的间距include_background_rectanglebool是否包含背景矩形此外,另有设置字体大小,颜色以及线条等等样式方面的参数(这些参数一般是mobjects模块中全部class通用的)。
2. 主要方法

DecimalNumber类主要用于展示数字,提供的方法不多,主要有3个:
名称说明get_value获取数值set_value设置数值increment_value增长数值使用示例:
val = DecimalNumber(10, group_with_commas=True)
print(f"原始数据:{val.get_value()}")

val.set_value(20)
print(f"设置数据:{val.get_value()}")

val.increment_value(2)
print(f"递增数据:{val.get_value()}")运行效果:
https://cdn.nlark.com/yuque/0/2024/png/2235414/1718161614881-7305117f-0b73-4552-9818-1ec4e4a72e29.png#averageHue=%232a2c37&from=paste&height=112&id=u841d8bb6&originHeight=112&originWidth=418&originalType=binary&ratio=1&rotation=0&showTitle=false&size=10986&status=done&style=stroke&taskId=u4dcd65fb-3a6c-40a1-af9a-ad49649b155&title=&width=418
3. 使用示例

接下来,通过示例演示主要参数的作用。
3.1. 正负号和单元

默认显示时,正数是不显示正号(+)的,显示正号通过 include_sign参数。
number = 3.1415926
val = DecimalNumber(number, include_sign=True)数值也可以加上单元,比如下面添加一个(km/s)速率单元。
val = DecimalNumber(number, unit="(km/s)")单元和数值之间的间隔也可以调整,通过unit_buff_per_font_unit来调整。
val = DecimalNumber(number, unit="(km/s)", unit_buff_per_font_unit=0.01)显示效果:
https://cdn.nlark.com/yuque/0/2024/gif/2235414/1718160437993-07a31724-4890-494b-9205-59460b70e10a.gif#averageHue=%23000000&from=drop&id=u71f0b590&originHeight=600&originWidth=800&originalType=binary&ratio=1&rotation=0&showTitle=false&size=147907&status=done&style=stroke&taskId=ubabc775c-1cf0-4825-b184-e72fe88b1c1&title=
3.2. 小数位数

从上面的示例可以看出,DecimalNumber默认生存2位小数,通过num_decimal_places可以控制生存的小数位数,舍弃的部分会自动四舍五入。
number = 3.1415926
val = DecimalNumber(number, num_decimal_places=3)
val = DecimalNumber(number, num_decimal_places=5)DecimalNumber另有个show_ellipsis参数,通过它,可以让我们知道显示的数值是否经过了四舍五入。
它会给经过四舍五入处理的数值加上省略号。
val = DecimalNumber(number, num_decimal_places=3, show_ellipsis=True)显示效果:
https://cdn.nlark.com/yuque/0/2024/gif/2235414/1718160903189-3b0c9d37-176a-42da-8a94-260376ccc7e8.gif#averageHue=%23000000&from=paste&height=600&id=u5c12faf5&originHeight=600&originWidth=800&originalType=binary&ratio=1&rotation=0&showTitle=false&size=108466&status=done&style=stroke&taskId=u3f931ab3-7d49-435f-a9ce-ad09b36dd93&title=&width=800
3.3. 数值中的逗号和背景

在会计统计中,对于比较大的数值,一般会用逗号分割数值,DecimalNumber的group_with_commas参数就控制是否用逗号分割数值的参数。
number = 123456789
val = DecimalNumber(number, group_with_commas=True)必要突出显示的数值,也可以通过include_background_rectangle参数给数值添加背景。
val = DecimalNumber(number, include_background_rectangle=True)显示效果:
https://cdn.nlark.com/yuque/0/2024/gif/2235414/1718161408320-4ba6d73c-35d3-4361-a624-511878267315.gif#averageHue=%23000000&from=paste&height=600&id=u197a02e6&originHeight=600&originWidth=800&originalType=binary&ratio=1&rotation=0&showTitle=false&size=90403&status=done&style=stroke&taskId=u9367d46d-4fb2-4bf8-9899-0b8ad97982c&title=&width=800
4. 附件

文中完备的代码放在网盘中了(decimal.py),
下载地址: () (访问密码: 6872)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: manim边学边做--DecimalNumber