当前位置: 首页 > news >正文

用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(对象)。每个标签的位置对应于其相应条形的顶部,在视觉上它们将显示于条形图的柱子上方。

相关文章:

用Manim创建条形图【BarChart】

BarChart是Manim库中用于创建条形图的函数。它允许用户通过一组值创建一个条形图&#xff0c;其参数可以调整条形的外观和布局。 BarChart(values, bar_namesNone, y_rangeNone, x_lengthNone, y_lengthNone, bar_colors[#003f5c, #58508d, #bc5090, #ff6361, #ffa600],bar_w…...

iMES工厂管家:强大的工厂管理系统

iMES工厂管家&#xff1a;强大的工厂管理系统 在现代工厂管理中&#xff0c;iMES工厂管家作为一款功能强大的MES系统&#xff0c;为用户提供了全面的管理解决方案。本文将介绍iMES工厂管家的基本信息、特点、以及如何快速部署和使用。 软件简介 iMES工厂管家是一款基于.NetCor…...

iOS ------ 事件响应链

响应者链 响应者链是由一系列链接在一起的响应者&#xff08;UIResponser之类&#xff1a;UIApplication&#xff0c;UIViewController&#xff0c;UIView&#xff09;注组成的。一般情况下&#xff0c;一条响应链开始于第一响应者&#xff0c;结束于application对象。如果一个…...

Go 语言 switch 语句的特点

在 Go 语言中&#xff0c;switch 语句设计得更加简洁和直观&#xff0c;因此不需要显式使用 break 语句来终止一个分支。这种设计决策源于 Go 语言的一些设计哲学和目标&#xff0c;主要包括&#xff1a; 自动终止&#xff1a; Go 语言的 switch 语句会在每个 case 执行完成后自…...

【递归】什么是递归-C语言为例

递归是指一个函数在其定义中直接或间接调用自身的编程技巧。在C语言中&#xff0c;递归常用于解决可以被分解为更小的子问题的问题。递归函数通常由两个主要部分组成&#xff1a; 基准情况&#xff1a;这是递归停止的条件&#xff0c;通常是最简单的情况。 递归情况&#xff1…...

vue针对低版本浏览器不兼容es6特性解决方案,

browser.min.js 解决ES6兼容IE browser.min.js&#xff0c;polyfill.min.js vue针对安卓低版本、ios9 不兼容 es6特性解决方案 解决IE9无法使用promise的js脚本&#xff0c;引入后&#xff0c;还需跟browser.js配合使用 Babel 默认只转换新的 JavaScript 句法&#xff0c;po…...

嵌入式内存管理高频面试题及参考答案(4万字长文)

目录 嵌入式系统中内存管理的重要性 嵌入式系统中的内存主要分为哪几类? 静态内存分配和动态内存分配的特点 内存对齐的概念及其作用 嵌入式系统中为什么需要关注内存碎片问题 内存分区的概念及其在嵌入式系统中的应用 内存映射文件的概念及其在嵌入式系统中的作用 虚…...

TinyWebserver的复现与改进(2):项目的整体框架

上文我们成功运行了代码&#xff0c;本文我们将对项目的整体流程作一下讲解 如果你之前没做过相关的内容&#xff0c;对服务器的⾼并发模型也⼀⽆所知&#xff0c;不建议继续做下去&#xff0c;需要的前置知识有&#xff1a; Linux的基本命令&#xff08;⭐&#xff09;多进程…...

R 语言学习教程,从入门到精通,R 字符串(10)

1、R 字符串 R 语言字符串可以使用一对单引号 ’ ’ 或一对双引号 " " 来表示。 单引号字符串中可以包含双引号。 单引号字符串中不可以包含单引号。 双引号字符串中可以包含单引号。 双引号字符串中不可以包含双引号。 以下示例演示来字符串的使用&#xff1a; a …...

QT 简易音乐播放器

目录 放置控件 获取mp3文件 播放音乐 准备工作 加载模块 加载头文件 new一个output对象,Mediaplayer对象 把outpout对象交给mediaplayer对象 给播放器设置音乐 播放 优化 上一曲下一曲功能 双击歌曲播放 获取音乐时长和音乐播放时间 让音乐进度条跟随音乐走 调…...

代码随想录八股训练营day32

代码随想录八股训练营day32 1、synchronized和lock的区别是什么 &#xff08;1&#xff09;synchronized和lock的区别是什么 synchronized和Lock都是Java中用于实现线程同步的手段&#xff0c;synchronized是Java的关键字&#xff0c;基于JVM的内置锁实现&#xff0c;可以用于…...

11.面试题——消息队列RabbitMQ

1.RabbitMQ是什么&#xff1f;特点是什么&#xff1f; RabbitMQ是一种开源的消息队列中间件&#xff0c;用于在应用程序之间进行可靠的消息传递。它实现了AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;协议&#xff0c;提供了强大的消息处理能力。RabbitMQ的…...

MySQL运维-日志

错误日志 二进制日志 介绍 日志格式 日志查看 日志删除 查询日志 慢查询日志...

synchronized重量级锁的实现原理是怎样的

重量级锁&#xff08;Heavyweight Locking&#xff09;是 Java 中 synchronized 关键字的锁机制的一部分&#xff0c;用于在高竞争情况下确保线程的同步。重量级锁主要通过操作系统的线程同步机制实现&#xff0c;通常涉及阻塞线程、上下文切换等开销较大的操作。以下是重量级锁…...

探索 GLTF 的世界:3D 内容的未来

在 3D 内容创作领域&#xff0c;GLTF 正在掀起波澜&#xff0c;成为跨不同平台提供丰富互动体验的未来标准。GL 传输格式 &#xff08;GLTF&#xff09; 由 Khronos Group 开发&#xff0c;是一种用于在工具和服务之间传输 3D 模型和场景的开放标准。它设计紧凑、高效且易于集成…...

【深度学习】【语音】TTS, CM-TTS,TTS扩散模型,论文

CM-TTS: Enhancing Real Time Text-to-Speech Synthesis Efficiencythrough Weighted Samplers and Consistency Models CM-TTS: 提高实时文本到语音合成效率 通过加权采样器和一致性模型 Xiang Li 1, Fan Bu 1, Ambuj Mehrish 2, Yingting Li 1, Jiale Han 1, Bo Cheng 1, S…...

【网络协议】网络劫持 - ARP_DNS欺骗篇

前言 网络劫持是一种网络攻击技术&#xff0c;攻击者通过拦截、篡改或重定向数据流量&#xff0c;控制用户的网络通信路径&#xff0c;干扰正常的网络服务。其方式可能包括DNS劫持、ARP欺骗和HTTP劫持等。通过这些手段&#xff0c;攻击者可以窃取敏感信息如个人身份数据和财务信…...

Linux 系统框架分析(一)

一、linux内核结构框图 对内核结构框图有个总体的把握&#xff0c;有助于理解为什么驱动要这样写&#xff0c;为什么写的应用程序所用的C库接口能够产生这么多的事情。 框图可以看出来&#xff0c;linux系统&#xff0c;包括五个系统 一、Linux内核结构介绍 Linux 内核是操作…...

Leetcode 剑指 Offer II 090.打家劫舍 II

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer&#xff08;专项突击版&#xff09;系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 一个专业的小偷&#xff0c;计划偷窃一个环形街道上沿街的房屋&a…...

上海冷链配送新篇章 华鼎冷链科技以卓越服务餐饮品牌

在快速发展的上海餐饮连锁行业中&#xff0c;冷链运输作为保障食品安全与品质的关键环节&#xff0c;正迎来前所未有的发展机遇与挑战。华鼎冷链科技作为该领域的佼佼者&#xff0c;正引领着上海乃至全国冷链运输行业的新风尚。 华鼎冷链科技的成功并非一蹴而就。首先&#xff…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...