Dual-Set Data Statistical Chart Construction Tool
Loading the math board and drawing, please wait…
This GeoGebra example demonstrates the construction of a statistical chart tool designed to simultaneously represent and compare two distinct datasets, enabling clear visual contrast of statistical distributions. The core mathematical concepts involved include data sequences, arithmetic mean, and the geometric mapping of numerical data into polygonal visual elements. In terms of construction, the tool leverages the `Sequence` command and `InputBox` objects to handle variable inputs (such as v_1 through v_{12}), utilizes `Point`, `Segment`, and `Midpoint` to establish the coordinate framework, and employs the `Polygon` command to render the comparative data bars (e.g., `Bar1`, `Data1`), integrated with `Textfield` objects for dynamic labeling. This example is ideal for high school and university students, particularly in statistics, coordinate geometry, and data visualization courses, to teach the intersection of algebraic data processing and geometric construction.
GeoGebra Commands & Parameters
Sequence((-4 + i, -4.2), i, 0, 18, 2) → g, {(-4, -4.2), (-2, -4.2), (0, -4.2), (2, -4.2), (4, -4.2), (6, -4.2), (8, -4.2), (10, -4.2), (12, -4.2), (14, -4.2)}Textfield() → InputBox1Point(g) → NSequence((-12, 2 + i + 0.2), i, 0, 4, 2) → f, {(-12, 2.2), (-12, 4.2), (-12, 6.2)}Point(f) → MSegment((-10, -4), (-10, Ymax)) → v_1Segment((-6, -4), (-6, Ymax)) → v_3Segment((0, -4), (0, Ymax)) → v_6Segment((2, -4), (2, Ymax)) → v_7Segment((4, -4), (4, Ymax)) → v_8Segment((6, -4), (6, Ymax)) → v_9Segment((8, -4), (8, Ymax)) → v_{10}Segment((10, -4), (10, Ymax)) → v_{11}Segment((-4, -4), (-4, Ymax)) → v_4Segment((-2, -4), (-2, Ymax)) → v_5Segment((12, -4), (12, Ymax)) → v_{12}Point(v_1) → ASegment((-8, -4), (-8, Ymax)) → v_2Point(v_2) → BPoint(v_3) → CPoint(v_4) → DPoint(v_5) → EPoint(v_6) → FPoint(v_7) → GPoint(v_8) → HPoint(v_9) → IPoint(v_{10}) → JPoint(v_{11}) → KPoint(v_{12}) → LSequence(Polygon[(-13 + (2 * i) + 0.4, -4), (-13 + (2 * i) + 0.4, Element[Data1, i]), (-13 + (2 * i) + 1.6, Element[Data1, i]), (-13 + (2 * i) + 1.6, -4)], i, 1, numClass, 1) → Bar1, {9.584999999999994, 6, 4.779999999999998, 7.199999999999998, 7.7700000000000005, 6.26, 5.706000000000002, 6.339999999999999, 6.339999999999996, 6.319999999999993, 6.599999999999994, 6.359999999999996}Point(v_1) → A'Point(v_2) → B'Point(v_3) → C'Point(v_4) → D'Point(v_5) → E'Point(v_6) → F'Point(v_7) → G'Point(v_8) → H'Point(v_9) → I'Point(v_{10}) → J'Point(v_{11}) → K'Point(v_{12}) → L'Sequence(Segment[(-12 + (2 * i), Element[Data1, i]), (-10 + (2 * i), Element[Data1, i + 1])], i, 1, numClass - 1, 1) → Line1, {3.5951573331357842, 2.2435710621932863, 2.8402366881026735, 2.0556325060671714, 2.3629225077809424, 2.0525925341165765, 2.068607287793193, 2, 2.0000694432388535, 2.0135651080718606, 2.009975124224178}Sequence(Polygon[(-13 + (2 * i) + 0.4, -4), (-13 + (2 * i) + 0.4, Element[Data2, i]), (-13 + (2 * i) + 1.6, Element[Data2, i]), (-13 + (2 * i) + 1.6, -4)], i, 1, numClass, 1) → Bar2, {8.459999999999994, 10.199999999999989, 11.384999999999987, 9.629999999999995, 8.940000000000001, 9.3, 7.840000000000002, 7.579999999999999, 7.719999999999997, 8.019999999999996, 7.999999999999993, 2.3599999999999994}Sequence(Segment[(-12 + (2 * i), Element[Data2, i]), (-10 + (2 * i), Element[Data2, i + 1])], i, 1, numClass - 1, 1) → Line2, {2.470323865407125, 2.230505828282007, 2.4776816280547442, 2.0810153771656754, 2.0223748416156684, 2.340999311784986, 2.0117018776261166, 2.0033998879682287, 2.0155644370746373, 2.0000694432388535, 5.107837115648853}Sequence(Segment[(-12 + (2 * i), -4), (-12 + (2 * i), -4.3)], i, 1, numClass, 1) → ClassMark, {0.2999999999999998, 0.2999999999999998, 0.2999999999999998, 0.2999999999999998, 0.2999999999999998, 0.2999999999999998, 0.2999999999999998, 0.2999999999999998, 0.2999999999999998, 0.2999999999999998, 0.2999999999999998, 0.2999999999999998}Sequence(Segment[(-12 + (0.2 * i), -4), (-12 + (0.2 * i), Ymax)], i, 1, (((2 * numClass) + 2) * 5), 1) → Vert1, {10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}Sequence(Segment[(-12, -4 + (0.2 * i)), ((2 * numClass) - 10, -4 + (0.2 * i))], i, 1, ((Ymax + 4) * 5), 1) → Hor1, {26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26}Sequence(Segment[((2 * numClass) - 10, -6 + i), ((2 * numClass) - 10 + 0.3, -6 + i)], i, 2, Ymax + 6, 2) → Ymark2, {0.3000000000000007, 0.3000000000000007, 0.3000000000000007, 0.3000000000000007, 0.3000000000000007, 0.3000000000000007}Sequence(Segment[(-12, -6 + i), (-12.3, -6 + i)], i, 2, Ymax + 6, 2) → Ymark1, {0.3000000000000007, 0.3000000000000007, 0.3000000000000007, 0.3000000000000007, 0.3000000000000007, 0.3000000000000007}Textfield() → InputBox2Textfield() → InputBox3Textfield() → InputBox4Textfield() → InputBox5Textfield() → InputBox6Textfield() → InputBox7Textfield() → InputBox8Textfield() → InputBox9Textfield() → InputBox10Textfield() → InputBox11Textfield() → InputBox13Textfield() → InputBox14Textfield() → InputBox15Textfield() → InputBox16Textfield() → InputBox17Textfield() → InputBox18Textfield() → InputBox19Textfield() → InputBox20Textfield() → InputBox21Textfield() → InputBox22Textfield() → InputBox23Textfield() → InputBox24Textfield() → InputBox12Point(Circle[Q_1, 1]) → Q_2Segment(Q_1, Q_2) → hMidpoint(Q_1, Q_2) → QPolygon(P_4, P_1, P_2, P_3) → q1, p_4, p_1, p_2, p_3Textfield() → InputBox25Point(Circle[R_1, 1]) → R_2Segment(R_1, R_2) → iMidpoint(R_1, R_2) → RTextfield() → InputBox26Segment((-12, -4), ((2 * numClass) - 10, -4)) → jSegment((-12, -4), (-12, Ymax)) → kSegment((-12 + (2 * numClass) + 2, -4), (-12 + (2 * numClass) + 2, Ymax)) → lSequence(Length[Element[l2, i]], i, 1, 6, 1) → l3, {0, 0, 0, 0, 0, 0}Sequence(Length[Element[l4, i]], i, 1, 6, 1) → l5, {0, 0, 0, 0, 0, 0}Sequence(Length[Element[l6, i]], i, 1, 12, 1) → l7, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}Sequence(Segment[(-12 + i, -4), (-12 + i, Ymax)], i, 0, (2 * numClass) + 2, 1) → Vert2, {10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10}Sequence(Segment[(-12, -4 + i), ((2 * numClass) - 10, -4 + i)], i, 0, Ymax + 4, 1) → Hor2, {26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26}
AI Drawing Prompt Reference
Create a coordinate-plane comparison chart with two datasets as statistical bars. First place regularly spaced baseline points that act as group boundaries, then draw vertical reference lines at fixed x-positions rising to a common maximum height. Next, on the left side, construct two separate sets of closed rectangular polygons (bars), one set for each dataset, where each bar’s height is determined by the corresponding data value and the bars for each class are aligned at consistent horizontal offsets. After that, connect the top points of consecutive bars in each dataset with a polyline to show the changing trend across classes. Finally add horizontal and vertical grid/reference lines to support reading values clearly.
The prompt above was compiled from the original drawing commands and is for reference only.