mirror of
https://github.com/3b1b/manim.git
synced 2025-08-05 16:49:03 +00:00
added more options for histograms
This commit is contained in:
parent
0b2eb9f93f
commit
e4cc190ee7
1 changed files with 16 additions and 5 deletions
|
@ -18,7 +18,11 @@ class Histogram(VMobject):
|
||||||
"y_scale" : 1.0,
|
"y_scale" : 1.0,
|
||||||
"x_labels" : "auto", # widths, mids, auto, none, [...]
|
"x_labels" : "auto", # widths, mids, auto, none, [...]
|
||||||
"y_labels" : "auto", # auto, none, [...]
|
"y_labels" : "auto", # auto, none, [...]
|
||||||
"x_min" : 0
|
"y_label_position" : "top", # "center"
|
||||||
|
"x_min" : 0,
|
||||||
|
"bar_stroke_width" : 5,
|
||||||
|
"outline_stroke_width" : 0,
|
||||||
|
"stroke_color" : WHITE
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, x_values, y_values, mode = "widths", **kwargs):
|
def __init__(self, x_values, y_values, mode = "widths", **kwargs):
|
||||||
|
@ -119,6 +123,8 @@ class Histogram(VMobject):
|
||||||
bar = Rectangle(
|
bar = Rectangle(
|
||||||
width = self.widths_scaled[i],
|
width = self.widths_scaled[i],
|
||||||
height = self.y_values_scaled[i],
|
height = self.y_values_scaled[i],
|
||||||
|
stroke_width = self.bar_stroke_width,
|
||||||
|
stroke_color = self.stroke_color,
|
||||||
)
|
)
|
||||||
t = float(x - self.x_min)/(self.x_max - self.x_min)
|
t = float(x - self.x_min)/(self.x_max - self.x_min)
|
||||||
bar_color = interpolate_color(
|
bar_color = interpolate_color(
|
||||||
|
@ -127,7 +133,6 @@ class Histogram(VMobject):
|
||||||
t
|
t
|
||||||
)
|
)
|
||||||
bar.set_fill(color = bar_color, opacity = 1)
|
bar.set_fill(color = bar_color, opacity = 1)
|
||||||
bar.set_stroke(width = 0)
|
|
||||||
bar.next_to(previous_bar,RIGHT,buff = 0, aligned_edge = DOWN)
|
bar.next_to(previous_bar,RIGHT,buff = 0, aligned_edge = DOWN)
|
||||||
|
|
||||||
self.bars.add(bar)
|
self.bars.add(bar)
|
||||||
|
@ -137,7 +142,12 @@ class Histogram(VMobject):
|
||||||
self.x_labels_group.add(x_label)
|
self.x_labels_group.add(x_label)
|
||||||
|
|
||||||
y_label = TextMobject(self.y_labels[i])
|
y_label = TextMobject(self.y_labels[i])
|
||||||
y_label.next_to(bar, UP)
|
if self.y_label_position == "top":
|
||||||
|
y_label.next_to(bar, UP)
|
||||||
|
elif self.y_label_position == "center":
|
||||||
|
y_label.move_to(bar)
|
||||||
|
else:
|
||||||
|
raise Exception("y_label_position must be top or center")
|
||||||
self.y_labels_group.add(y_label)
|
self.y_labels_group.add(y_label)
|
||||||
|
|
||||||
if i == 0:
|
if i == 0:
|
||||||
|
@ -155,8 +165,9 @@ class Histogram(VMobject):
|
||||||
# lower left
|
# lower left
|
||||||
outline_points.append(outline_points[0])
|
outline_points.append(outline_points[0])
|
||||||
|
|
||||||
self.outline = Polygon(*outline_points)
|
self.outline = Polygon(*outline_points,
|
||||||
self.outline.set_stroke(color = WHITE)
|
stroke_width = self.outline_stroke_width,
|
||||||
|
stroke_color = self.stroke_color)
|
||||||
self.add(self.bars, self.x_labels_group, self.y_labels_group, self.outline)
|
self.add(self.bars, self.x_labels_group, self.y_labels_group, self.outline)
|
||||||
|
|
||||||
print self.submobjects
|
print self.submobjects
|
||||||
|
|
Loading…
Add table
Reference in a new issue