用Manim创建条形图【BarChart】

BarChart是Manim库中用于创建条形图的函数。它允许用户通过一组值创建一个条形图,其参数可以调整条形的外观和布局。

BarChart(values, bar_names=None, y_range=None, x_length=None, 
y_length=None, bar_colors=['#003f5c', '#58508d', '#bc5090', '#ff6361', '#ffa600'],bar_width=0.6, bar_fill_opacity=0.7, bar_stroke_width=3, **kwargs)[source]

 以下是函数及其参数的详细解释:

参数解释:

  • values:

    • 类型: 列表
    • 描述: 条形图每个条形的高度(或长度)的数值列表。
  • bar_names:

    • 类型: 列表 (可选)
    • 描述: 条形的名称列表,如果提供,会显示在相应的条形下方。
  • y_range:

    • 类型: 元组 (可选)
    • 描述: y轴的范围,格式为 (y_min, y_max),用于设置条形的最大和最小值。
  • x_length:

    • 类型: 浮点数 (可选)
    • 描述: 条形图在水平方向上的长度。
  • y_length:

    • 类型: 浮点数 (可选)
    • 描述: 条形图在垂直方向上的长度。
  • bar_colors:

    • 类型: 列表 (可选)
    • 描述: 条形的颜色列表,可以为每个条形设置不同的颜色。
  • bar_width:

    • 类型: 浮点数 (可选)
    • 描述: 每个条形的宽度。
  • bar_fill_opacity:

    • 类型: 浮点数 (可选)
    • 描述: 条形填充的透明度,范围是0到1。
  • bar_stroke_width:

    • 类型: 整数 (可选)
    • 描述: 条形边框的宽度。
  • kwargs:

    • 描述: 额外的可选参数,可以传递给基类的构造函数。

示例代码1:

以下是一个使用BarChart创建简单条形图的代码示例:

from manim import *  class BarChartExample113(Scene):  def construct(self):  # 数据值和对应名称  values = [3, 5, -2, 4]  # 条形的高度对应的数值  bar_names = ["A", "B", "C", "D"]  # 条形的名称  # 创建条形图  bar_chart = BarChart(  values,  # 条形的高度  bar_names=bar_names,  # 条形的名称  y_range=(0, 6),  # y 轴的范围  x_length=6,  # x 轴的长度  y_length=4,  # y 轴的长度  bar_colors=['#003f5c', '#58508d', '#bc5090', '#ff6361'],  # 条形的颜色  bar_width=0.5,  # 条形的宽度  bar_fill_opacity=0.8,  # 条形的填充透明度  bar_stroke_width=2  # 条形边框的宽度  )  c_bar_lbls = bar_chart.get_bar_labels(font_size=48)# 添加条形图到场景  self.add(bar_chart,c_bar_lbls)  # 动画展示条形图的创建  

 运行结果:

 示例2:

class BarChartExample112(Scene):def construct(self):chart = BarChart(values=[-5, 40, -1, 20, -13,17.8],bar_names=["one", "two", "three", "four", "five","six"],y_range=[-20, 50, 10],y_length=6,x_length=10,x_axis_config={"font_size": 36},)c_bar_lbls = chart.get_bar_labels(font_size=48)self.add(chart, c_bar_lbls)

 运行结果:

示例3: 

from manim import *class ChangeBarValuesExample(Scene):  def construct(self):  # 定义一组值,这些值将用于创建条形图  values = [-10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10]  # 创建条形图  chart = BarChart(  values,  # 提供的值用于条形的高度  y_range=[-10, 10, 2],  # y 轴的范围,最小值为 -10,最大值为 10,间隔为 2  y_axis_config={"font_size": 24},  # y 轴的字体大小设置为 24  )  # 将条形图添加到场景中  self.add(chart)  # 更新条形图中的值,使用原值的反向列表  chart.change_bar_values(list(reversed(values)))  # 获取条形图的标签并添加到场景中,标签的字体大小设置为 24  self.add(chart.get_bar_labels(font_size=24))  
函数解释
函数解释
  1. 类定义

    • ChangeBarValuesExample(Scene) 是一个继承自 Scene 的类,用于定义一个场景中将如何展示条形图。
  2. construct 方法

    • construct(self) 是 Scene 类中的一个方法,用于定义场景的构造过程。
  3. 数据定义

    • values = [-10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10]:这段代码定义了一组整数值,代表条形图的高度。
  4. 创建条形图

    • chart = BarChart(...):创建一个条形图对象。参数包括:
      • values:用于生成条形图的高度。
      • y_range:设置 y 轴的范围和刻度。
      • y_axis_config:指定 y 轴的字体大小。
  5. 添加条形图到场景

    • self.add(chart):将创建的条形图添加到场景中,以供渲染。
  6. 修改条形图的值

    • chart.change_bar_values(list(reversed(values))):将条形图中柱子的高度更改为原列表的反向顺序。list(reversed(values)) 会生成一个新列表,其中的值是 values 列表的反向顺序。
  7. 添加条形图标签

    • self.add(chart.get_bar_labels(font_size=24)):获取条形图的标签并设置字体大小为 24,然后将这些标签添加到场景中,便于查看每个条形的具体数值。

运行结果: 

 示例4:

from manim import *  class GetBarLabelsExample(Scene):  def construct(self):  # 创建一个条形图,值从 10 到 1,y 轴范围从 0 到 10  chart = BarChart(values=[10, 9, 8, 7, 6, 5, 4, 3, 2, 1], y_range=[0, 10, 1])  # 获取条形图的标签  c_bar_lbls = chart.get_bar_labels(  color=WHITE,  # 标签的颜色设为白色  label_constructor=MathTex,  # 标签的构造方法使用 MathTex,用于渲染数学公式  font_size=36  # 标签的字体大小设为 36  )  # 将条形图和标签添加到场景中  self.add(chart, c_bar_lbls)

 运行结果:

 关键函数:
get_bar_labels(color=None, font_size=24, buff=0.25, label_constructor=<class'manim.mobject.text.tex_mobject.Tex'>)[source]

get_bar_labels 是 Manim 中 BarChart 类的方法,用于获取条形图的标签。以下是对该函数参数的详细解释:

get_bar_labels(color=None, font_size=24, buff=0.25,label_constructor=<class 'manim.mobject.text.tex_mobject.Tex'>) 
参数解释
  1. color

    • 类型:颜色(Color)
    • 默认值:None
    • 作用:设置标签的颜色。如果未指定,标签颜色将使用默认值。如果想要自定义颜色,可以传递一个有效的颜色对象。
  2. font_size

    • 类型:整数(int)
    • 默认值:24
    • 作用:设置标签的字体大小。可以调整此值以根据需要改变标签的显示大小。
  3. buff

    • 类型:浮点数(float)
    • 默认值:0.25
    • 作用:设置标签与条形图顶部之间的间距(缓冲距离)。这个值决定了标签与相应条形的垂直距离,增加该值会将标签向上移动,减小该值则会将标签拉近。
  4. label_constructor

    • 类型:类(class)
    • 默认值:<class 'manim.mobject.text.tex_mobject.Tex'>
    • 作用:指定用于创建标签的构造方法。可以自定义使用不同的文本或数学文本类。例如,通常使用 MathTex 来渲染带有数学公式的标签,使用 Tex 来渲染普通文本。
函数返回值

该函数返回一个包含所有条形图标签的 Mobject(对象)。每个标签的位置对应于其相应条形的顶部,在视觉上它们将显示于条形图的柱子上方。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js第四天-函数

例1&#xff1a;选出最大值&#xff1a; <script>function getmax(x, y) {return x > y ? x : y}let max getmax(1, 3)</script> 例2&#xff1a;返回数组的最大值 <script>function getArrValue(arr []) {let max arr[0]for (let i 1; i < arr.…

基于Hadoop的共享单车分布式存储与计算

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍研究背景研究目的和意义国内外研究现状总体研究思路数据可视化每文一语 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 共享单车的普及带…

Elastic 基于 RAG 的 AI 助手:使用 LLM 和私有 GitHub 问题分析应用程序问题

作者&#xff1a;来自 Bahubali Shetti 作为 SRE&#xff0c;分析应用程序比以往任何时候都更加复杂。你不仅必须确保应用程序以最佳方式运行以确保出色的客户体验&#xff0c;而且在某些情况下还必须了解内部工作原理以帮助排除故障。分析基于生产的服务中的问题是一项团队运动…

HTML “文本处理基础”--文本格式化——WEB开发系列05

HTML 的主要工作之一是赋予文本结构&#xff0c;使浏览器能够按照开发者的意图显示 HTML 文档。 在创建网页时&#xff0c;文本格式化是至关重要的&#xff0c;它不仅可以影响用户的阅读体验&#xff0c;还可以增强网页的可读性和美观性。HTML 如何通过添加标题和段落、强调单词…

中央空调系统

1.水机 它首先通过主机将水变成7度左右的冷水&#xff08;制冷&#xff09;&#xff0c;然后通过水管通过水泵输送到房间的每一端。末端的风机盘管与室内空气进行热交换&#xff0c;达到制冷的目的。供暖也是如此&#xff0c;但主机先把水变成50度左右的热水这种空调的优点是舒…

前端已经学会vue,做粒子效果

目录 1. Canvas API 2. WebGL 3. 粒子系统 4. 动画与性能优化 5. 现有库和框架 6. Vue 组件和状态管理 实践项目建议 案例1 案例2雪花 已经熟悉了 Vue、TypeScript 和 JavaScript&#xff0c;下面是一些你可以学习的内容&#xff0c;以帮助你实现粒子效果的界面&#…

享界S9+问界M9,华为智选车的高端局

作者 |老缅 编辑 |德新 8月6日&#xff0c;鸿蒙智行在北京发布D级纯电旗舰轿车&#xff0c;也是北汽 - 华为智选车合作的第一款车型&#xff0c;享界S9。 享界S9搭载了包括华为乾崑ADS 3.0在内的多项首发技术&#xff0c;全系标配100kWh华为800V巨鲸电池。 而在价格上&#…

记2024-08原生微信小程序开发

继2024.08 最近需要开发一个微信小程序的一个功能模块&#xff0c;但是之前在学的时候都是好几年前的东东了&#xff0c;然后重新快速过了一遍b站大学的教程&#xff0c;这篇文章就是基于教程进行的一些总结&#xff0c;和自己开发过程当中使用到的一些点和一些技巧什么的吧。 …

计算机网络408考研 2019

计算机网络408考研2019年真题解析_哔哩哔哩_bilibili 2019 1 1 1 1

仿RabbiteMq简易消息队列基础篇(gtest的使用)

TOC gtest介绍 gtest是google的一个开源框架&#xff0c;它主要用于写单元测试&#xff0c;检查自己的程序是否符合预期行为。可在多个平台上使用&#xff08;包含Linux&#xff0c;MAC OC&#xff0c;Windows等&#xff09;。它提供了丰富的断言&#xff0c;致命和非致命失败…

Spring Boot 3.x Filter实战:记录请求日志

上一篇&#xff1a;Spring Boot 3.x Web单元测试最佳实践 下一篇&#xff1a;Spring Boot 3.x Web MVC实战&#xff1a;实现流缓存的request 前面我们在《Spring Boot 3.x Rest API最佳实践之统一响应结构》中学习响应的统一拦截处理&#xff0c;顺带完成了响应结果的记录&am…

06:【stm32】OLED模块的简单使用

OLED模块的简单使用 OLED简单的使用 OLED简单的使用 OLED驱动函数是使用B站UP江科大的。我们直接调用即可&#xff0c;是使用软件模拟I2C协议进行通信的。具体的I2C协议可查看上官嵌入式开发中的C51单片机开发。 驱动函数文件&#xff1a;通过百度网盘分享的文件&#xff1a;…

2024 年的 Node.js 生态系统

数据来源于 Node.js Toolbox&#xff0c;网站展示了 Node.js 生态系统中积极维护且流行的库。

【Linux】lvm被删除或者lvm丢失了怎么办

模拟案例 接下来模拟lvm误删除如何恢复的案例&#xff1a; 模拟删除&#xff1a; 查看vg名&#xff1a; vgdisplayvgcfgrestore --list uniontechos #查看之前的操作 例如我删除的&#xff0c;现场没有删除就用最近的操作文件&#xff1a; 还原&#xff1a; vgcfgrestore…

Java实战一 手动创建springboot3+mybatis+mysql工程

idea手动创建sb工程&#xff0c;选择好配置&#xff0c;使用jdk17 main下补全目录resource resource下补全application.yml 引入依赖 &#xff0c;写入父工程 刷新maven 补全配置 创建所需目录 创建User实体类 创建启动类BootDemoApplication 运行启动类成功看到运行在8080端…

#include “ascii_font.c“ 引入源文件,Keil5为什么没有提示重复定义错误,详解!!!

目录 相关原理 Keil编译器规则 重点知识.c文件和.h文件的处理方式和用途 为什么在 example.c文件中需要这条指令#include "example.h" 没有包含会怎么样 配置前提 首先没有提示重复定义.c文件进行报错的前提是&#xff0c;Keil5中没有添加这源文件&#xff…

Linux服务管理(五)Apache服务优化

CustomLog "|/bin/rotatelogs -l /wwwlogs/access_%Y%m%d.log 86400" combined日志旋转可参考这篇文章&#xff1a; https://blog.csdn.net/weixin_43576565/article/details/139989701 要优化首先你得有Apache yum -y install httpd启动 service httpd start写入…

yolov8人脸识别案例

GitHub - wangWEI201901/YOLOv8-Detection-Project: &#x1f6e3;️基于YOLOv8的智慧校园人脸识别和公路汽车检测

5、关于kali搭建vulhub

Vulhub是一个基于Docker和Docker-compose的漏洞靶场环境&#xff0c;所以搭建vulhub分三步&#xff1a; 1、安装docker 2、安装docker-compose 3、安装vulhub 一、安装步骤 1、安装docker 因为kali太久没用&#xff0c;所以需要先更新软件列表最新源 apt-get update 安装do…

DC-DC高压输入30V/10W全桥拓扑结构隔离开关电源专用芯片

概述&#xff1a; PC6703 是一款专门为小体积、低待机功耗的微功率隔离电源而设计的变压器驱动器&#xff0c;其外围只需匹配简单的输入输出滤波电容、隔离变压器和整流电路&#xff0c;即可实现 6~30V 输入电压、多种输出电压、输出功率1 ~10W 的隔离电源。 PC6703 内部集成…