柱状图¶
限定名称: 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 ¶
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)方法
更新图表中条形的高度。
为每个条形图标注其对应的值。
属性
animate用于动画化
self的任何方法的应用。animation_overridescolordepthmobject的深度。
fill_color如果有多种颜色(用于渐变),则返回第一个颜色
heightmobject的高度。
n_points_per_curvesheen_factorstroke_colorwidthmobject的宽度。
- _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:
- _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 ¶
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 ¶
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)