Assignment 6: Uncharted

For this final project, we're going to explore the Charts functionality within C#, as the means of creating "template" charts quickly, and easily, as might be particularly useful for any kind of data visualization we're attempting with our work. You're also going to have the freedom to choose which charts you would like to use (although they must be unique), as well as the data points you want to represent (although there must be a minimum number of data points). I expect the latter will be the most difficult part of the assignment.

Make sure to include this using statement:

using System.Windows.Forms.DataVisualization.Charting;

As it will give you access to data types such as Chart, and Series.

The specific parameters of this assignment are as follows:

  1. There will be a "portal" Form, which will only contain the buttons that transition to one of the other Forms you'll create (or Hide/Show), which will contain the designated chart. The buttons should have labels indicating the type of chart you're demo'ing, such "Bar Chart" or "Powerlifting Totals Over Time: A Line Chart". There must be a button on each of these chart Forms that allows you to return to this "portal", also triggered by closing the chart Form by clicking the X in the top right corner.

  2. Include an "Exit" button on the "portal" Form as well.

  3. At any given point during the program's execution, there should only be one Form visible.

  4. Each chart Form must contain:
    1. A Title

    2. A label for both the X and Y axes (as applicable)

    3. Labels for the tick marks of each axes (as applicable)

    4. Percentage values of the whole (as applicable -- think Pie Chart)

    5. A legend defining groups of data or sections of the chart (as applicable)

  5. There must be at least four (4) unique charts you demonstrate. If possible, they may share the same data. NOTE: You may not use both Bar and Column charts, and they're effectively the same graph, just tilted 90 degrees.

  6. At least one of the charts must contain representations for at least three similarly groups of data. For example, my "Powerlifting Totals Over Time" chart may contain totals for myself, my non-existent best friend, and non-existent significant other. Ideally, this would be achieved by coloring those groups of data points differently from each other. Here's a great visual example of what I mean.

  7. All charts must represent no less than ten (10) data points. Some denser chart types such as Box Plot contain multiple data points within each "box", meaning you only need 3-4 of them to cover the minimum requirement.

  8. There will be no requirement that the data you use be factual. You're encouraged to use real data if possible, but you're welcome to simply invent data points to be used. In either case, though, you should be storing the data points into data files that are read and processed when the program starts up. Hard-coding your data points within the program is discouraged, as goes for most any instance of hard-coding. The one exception, though, is if you use a mathematical function to plot an arbitrary number of points!

And that's it! Bonus Cool Person Points if you integrate a joke into your chart, such as how much enjoyment is derived from naps over the course of your life (with the graph tending towards positive infinity as you get older), or how many living creature existed in the universe leading up to and shortly after The Snap.