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))  
函数解释函数解释
- 类定义: - ChangeBarValuesExample(Scene)是一个继承自- Scene的类,用于定义一个场景中将如何展示条形图。
 
- construct 方法: - construct(self)是- Scene类中的一个方法,用于定义场景的构造过程。
 
- 数据定义: - values = [-10, -8, -6, -4, -2, 0, 2, 4, 6, 8, 10]:这段代码定义了一组整数值,代表条形图的高度。
 
- 创建条形图: - chart = BarChart(...):创建一个条形图对象。参数包括:- values:用于生成条形图的高度。
- y_range:设置 y 轴的范围和刻度。
- y_axis_config:指定 y 轴的字体大小。
 
 
- 添加条形图到场景: - self.add(chart):将创建的条形图添加到场景中,以供渲染。
 
- 修改条形图的值: - chart.change_bar_values(list(reversed(values))):将条形图中柱子的高度更改为原列表的反向顺序。- list(reversed(values))会生成一个新列表,其中的值是- values列表的反向顺序。
 
- 添加条形图标签: - 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'>) 参数解释
- color:- 类型:颜色(Color)
- 默认值:None
- 作用:设置标签的颜色。如果未指定,标签颜色将使用默认值。如果想要自定义颜色,可以传递一个有效的颜色对象。
 
- font_size:- 类型:整数(int)
- 默认值:24
- 作用:设置标签的字体大小。可以调整此值以根据需要改变标签的显示大小。
 
- buff:- 类型:浮点数(float)
- 默认值:0.25
- 作用:设置标签与条形图顶部之间的间距(缓冲距离)。这个值决定了标签与相应条形的垂直距离,增加该值会将标签向上移动,减小该值则会将标签拉近。
 
- label_constructor:- 类型:类(class)
- 默认值:<class 'manim.mobject.text.tex_mobject.Tex'>
- 作用:指定用于创建标签的构造方法。可以自定义使用不同的文本或数学文本类。例如,通常使用 MathTex来渲染带有数学公式的标签,使用Tex来渲染普通文本。
 
函数返回值
该函数返回一个包含所有条形图标签的 Mobject(对象)。每个标签的位置对应于其相应条形的顶部,在视觉上它们将显示于条形图的柱子上方。