柱状图

限定名称: manim.mobject.graphing.probability.BarChart

class 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)[来源]

基础:Axes

创建一个条形图。继承自Axes,因此它共享其方法和属性。每个轴继承自NumberLine,因此传入x_axis_config/y_axis_config以控制它们的属性。

Parameters:
  • values (MutableSequence[float]) – 一个决定每个条形高度的值序列。接受负值。

  • bar_names (Sequence[str] | None) – 每个柱状图的名称序列。不需要与values的长度匹配。

  • y_range (Sequence[float] | None) – y轴的值范围。如果为None,范围将根据values的最小/最大值计算,步长将根据y_length计算。

  • x_length (float | None) – x轴的长度。如果为None,则根据值的数量和屏幕宽度自动计算。

  • y_length (float | None) – y轴的长度。

  • bar_colors (Iterable[str]) – 柱状图的颜色。接受一系列颜色(可以只包含一个项目)。 如果values的长度与``bar_colors``不匹配, 中间颜色将自动确定。

  • bar_width (float) – 条形的长度。必须在0到1之间。

  • bar_fill_opacity (float) – 柱子的填充不透明度。

  • bar_stroke_width (float) – 柱子的描边宽度。

示例

示例:BarChartExample

../_images/BarChartExample-1.png
from manim import *

class BarChartExample(Scene):
    def construct(self):
        chart = BarChart(
            values=[-5, 40, -10, 20, -3],
            bar_names=["one", "two", "three", "four", "five"],
            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)
class BarChartExample(Scene):
    def construct(self):
        chart = BarChart(
            values=[-5, 40, -10, 20, -3],
            bar_names=["one", "two", "three", "four", "five"],
            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)

方法

change_bar_values

更新图表中条形的高度。

get_bar_labels

为每个条形图标注其对应的值。

属性

animate

用于动画化self的任何方法的应用。

animation_overrides

color

depth

mobject的深度。

fill_color

如果有多种颜色(用于渐变),则返回第一个颜色

height

mobject的高度。

n_points_per_curve

sheen_factor

stroke_color

width

mobject的宽度。

_add_x_axis_labels()[source]

本质上类似于 :meth`:~.NumberLine.add_labels`,但不同之处在于标签相对于 x_轴的方向会根据值的变化而变为向上或向下。

负值向上取整,正值向下取整。

_create_bar(bar_number, value)[source]

在图表上创建一个定位的条形图。

Parameters:
  • bar_number (int) – 确定柱子的x位置。

  • value (float) – 决定条形高度的值。

Returns:

表示图表上条形的位置矩形。

Return type:

Rectangle

_original__init__(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)

初始化自身。有关准确的签名,请参阅 help(type(self))。

Parameters:
  • (可变序列[浮点数])

  • bar_names (Sequence[str] | None)

  • y_range (序列[浮点数] | )

  • x_length (浮点数 | )

  • y_length (float | None)

  • bar_colors (可迭代[字符串])

  • bar_width (float)

  • bar_fill_opacity (float)

  • bar_stroke_width (float)

_update_colors()[source]

初始化图表条形的颜色。

通过self.bar_colors设置self.bars的颜色。

主要用于当柱状图通过self._add_bars初始化 或通过self.change_bar_values更新时。

change_bar_values(values, update_colors=True)[source]

更新图表中条形的高度。

Parameters:
  • values (Iterable[float]) – 用于更新条形高度的值。 不需要与条形的数量匹配。

  • update_colors (bool) – 是否根据self.bar_colors重新初始化条形的颜色。

示例

示例:ChangeBarValuesExample

../_images/ChangeBarValuesExample-1.png
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_axis_config={"font_size": 24},
        )
        self.add(chart)

        chart.change_bar_values(list(reversed(values)))
        self.add(chart.get_bar_labels(font_size=24))
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_axis_config={"font_size": 24},
        )
        self.add(chart)

        chart.change_bar_values(list(reversed(values)))
        self.add(chart.get_bar_labels(font_size=24))

get_bar_labels(color=None, font_size=24, buff=0.25, label_constructor=<class 'manim.mobject.text.tex_mobject.Tex'>)[来源]

为每个条形图标注其对应的值。创建后使用self.bar_labels来访问标签。

Parameters:
  • 颜色 (ParsableManimColor | None) – 每个标签的颜色。默认情况下为 None,并基于父级条形的颜色。

  • font_size (float) – 每个标签的字体大小。

  • buff (float) – 每个标签到其条形的距离。默认值为0.4。

  • label_constructor (type[VMobject]) – 用于构造标签的Mobject类,默认为Tex

示例

示例:GetBarLabelsExample

../_images/GetBarLabelsExample-1.png
from manim import *

class GetBarLabelsExample(Scene):
    def construct(self):
        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, font_size=36
        )

        self.add(chart, c_bar_lbls)
class GetBarLabelsExample(Scene):
    def construct(self):
        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, font_size=36
        )

        self.add(chart, c_bar_lbls)