def get_axis_labels(self, x_label="x", y_label="y"): x_axis, y_axis = self.get_axes().split() quads = [ (x_axis, x_label, UP, RIGHT), (y_axis, y_label, RIGHT, UP), ] labels = VGroup() for axis, tex, vect, edge in quads: label = TexMobject(tex) label.add_background_rectangle() label.next_to(axis, vect) label.to_edge(edge) labels.add(label) self.axis_labels = labels return labels
def setup(self): prod_tex_strings = [ "\\left[" + "+".join([f"f({p}^{k})" for k in range(4)] + ["\\cdots"]) + "\\right] \\times" for p in [2, 3, 5, 7] ] + ["\\cdots"] prod_tex = TexMobject(*prod_tex_strings) prod_tex.arrange_submobjects(DOWN, aligned_edge=LEFT, buff=0.5) prod_tex.scale(0.8) sum_tex_strings = [ f"f({3*k+1}) + f({3*k+2}) + f({3*k+3}) +" for k in range(3) ] + ["f(10) + \\cdots"] sum_tex = TexMobject(*sum_tex_strings) sum_tex.arrange_submobjects(DOWN, aligned_edge=LEFT, buff=0.25) sum_tex.scale(0.8) VGroup(prod_tex, sum_tex).arrange_submobjects(RIGHT, aligned_edge=UP) VGroup(prod_tex, sum_tex).shift(DOWN) prod_tex.to_edge(LEFT, buff=1) sum_tex.to_edge(RIGHT, buff=1) # It shouldn't be hard-coded, but... hey, it's only a demo. k_list = ( [0, 0, 0, 0], [1, 1, 1, 1], [2, 1, 1, 1], [1, 2, 1, 1], [3, 1, 1, 1], [1, 1, 2, 1], [2, 2, 1, 1], [1, 1, 1, 2], [4, 1, 1, 1], [1, 3, 1, 1], [2, 1, 2, 1], ) self.prod_tex = prod_tex self.sum_tex = sum_tex self.k_list = k_list