您的位置:首页 > 文旅 > 美景 > 用Manim创建条形图【BarChart】

用Manim创建条形图【BarChart】

2024/10/6 14:38:22 来源:https://blog.csdn.net/qq_45449625/article/details/141072781  浏览:    关键词:用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(对象)。每个标签的位置对应于其相应条形的顶部,在视觉上它们将显示于条形图的柱子上方。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com