📔
intro-to-python
  • An Introduction to Programming in Python (for Business Students)
  • exercises
    • Data Flow Diagramming Exercise
    • Developer Collaboration Exercise
    • README
    • "Web App" Exercise
      • checkpoints
        • Checkpoint 5: Bootstrap Layout
        • Checkpoint 4: Submitting Data from Web Forms
        • Checkpoint 3: Rendering HTML Pages
        • Checkpoint 1: Routing
        • Checkpoint 2: Modular Organization
      • "Web App" Exercise - Further Exploration
    • hello-world
      • "Hello World (Local)" Exercise
      • "Hello World (Local w/ Version Control)" Exercise
      • "Hello World (Colab)" Exercise
    • "Interface Capabilities" Exercise
    • "Continuous Integration 1, 2, 3" Exercise
    • "Web Service" Exercise
      • "Web Service" Exercise - Further Exploration
    • "Testing 1, 2, 3" Exercise
    • "Command-line Computing" Exercise
      • "Command-line Computing" Exercise
      • Professor Rossetti's Mac Terminal Configuration
      • Command-line Computing Exercise
    • "Codebase Cleanup" Assignment
    • "List Comprehensions" Exercise
    • "Groceries" Exercise
      • Python Datatypes (a.k.a. "Groceries") Exercise
      • Python Datatypes (a.k.a. "Groceries") Exercise
    • "Rock, Paper, Scissors" Exercise
      • "Rock, Paper, Scissors" Exercise
    • README
    • "Monthly Sales Predictions" Exercise
    • Setting up your Local Development Environment
    • "Chart Gallery" Exercise
    • "Run the App" Exercise
    • "Web Requests" Exercise
    • "API Client" Exercise
    • "Custom Functions" Exercise
    • Process Diagramming Exercise
  • notes
    • python
      • packages
        • The bigquery Package
        • The PySimpleGUI Package
        • The dotenv Package
        • The matplotlib Package
        • The requests Package
        • The altair Package
        • The gspread Package
        • The PyMySQL Package
        • The psycopg2 Package
        • The selenium Package
        • The seaborn Package
        • The pytest Package
        • The SpeechRecognition Package
        • The flask Package
        • The pandas Package
        • The spotipy Package
        • The pipenv Package
        • The nltk Package
        • The sqlalchemy Package
        • The pymongo Package
        • The plotly Package
        • The BeautifulSoup Package
        • The sendgrid Package
        • The fpdf Package
        • The autopep8 Package
        • The tweepy Package
        • The twilio Package
        • The tkinter Package
      • Python Datatypes Overview
        • Numbers
        • Classes
        • Dates and Times
        • Strings
        • None
        • Dictionaries
        • Booleans
        • Lists
        • Class Inheritance
      • Control Flow
      • Python Modules
        • The webbrowser Module
        • The time Module
        • The csv Module
        • The sqlite3 Module
        • The itertools Module
        • The json Module
        • The math Module
        • The os Module
        • The statistics Module
        • The random Module
        • The pprint Module
        • The datetime Module
        • The collections Module
      • Printing and Logging
      • Comments
      • Syntax and Style
      • Functions
      • Variables
      • Errors
      • Docstrings
      • File Management
      • User Inputs
      • Debugging
    • clis
      • The git Utility
      • Heroku, and the heroku Utility
      • Anaconda
      • The chromedriver Utility
      • The brew Utility (Mac OS)
      • The pdftotext Utility
      • The python Utility
      • The pip Utility
    • Software
      • Software Licensing
      • Software Documentation
      • Software Ethics
      • Software Testing Overview
      • Application Programming Interfaces (APIs)
      • Software Version Control
      • Software Refactoring Overview
    • devtools
      • The VS Code Text Editor
      • Code Climate
      • Travis CI
      • GitHub Desktop Software
      • Git Bash
      • Google Colab
    • Information Systems
      • Computer Networks
      • Processes
      • Datastores
      • Information Security and Privacy
      • People
    • Technology Project Management
      • Project Management Tools and Techniques
      • The Systems Development Lifecycle (SDLC)
    • hardware
      • Servers
    • Environment Variables
  • projects
    • "Executive Dashboard" Project
      • testing
      • "Exec Dash" Further Exploration Challenges
    • The Self-Directed (a.k.a "Freestyle") Project
      • "Freestyle" Project - Demonstration
      • "Freestyle" Project - Implementation (TECH 2335 Version)
      • "Freestyle" Project - Implementation
      • "Freestyle" Project Proposal
      • plan
    • "Robo Advisor" Project
      • Robo Advisor Project - Automated Testing Challenges
      • "Robo Advisor" Further Exploration Challenges
    • "Shopping Cart" Project
      • "Shopping Cart" Project - Automated Testing Challenges
      • "Shopping Cart" Further Exploration Challenges
      • "Shopping Cart" Project Checkpoints
  • License
  • Exam Prep
  • units
    • Unit 4B: User Interfaces and Experiences (Bonus Material)
    • Unit 5b: Databases and Datastores
    • Module 1 Review
    • Unit 7b: Processing Data from the Internet (Bonus Material)
    • Unit 9: Software Products and Services
    • Unit 8: Software Maintenance and Quality Control
    • Unit 7: Processing Data from the Internet
    • Unit 6: Data Visualization
    • Unit 5: Processing CSV Data
    • Unit 4: User Interfaces and Experiences
    • Unit 3: Python Datatypes
    • Unit 12: Project Presentations
    • Unit 2: Python Language Overview
    • Unit 11: Project Implementation Sprint
    • Unit 1: The Python Development Environment
    • Unit 10: Software Planning, Analysis, and Design
    • Unit 0: Onboarding
    • Unit 5B: Advanced Data Analytics
  • Contributor's Guide
Powered by GitBook
On this page
  • Learning Objectives
  • Setup
  • Repo Setup
  • Environment Setup
  • Instructions
  • Research Phase
  • Investigation Phase
  • Development Phase

Was this helpful?

  1. exercises

"Chart Gallery" Exercise

Learning Objectives

  • Learn how to create data visualizations in Python.

  • Practice an active learning process to perform research and investigate capabilities of third-party Python packages.

Setup

Repo Setup

Use the GitHub.com online interface to create a new remote project repository called something like "chart-gallery". When prompted by the GitHub.com online interface, let's get in the habit of adding a "README.md" file and a Python-flavored ".gitignore" file (and also optionally a "LICENSE") during the repo creation process. After this process is complete, you should be able to view the repo on GitHub.com at an address like https://github.com/YOUR_USERNAME/chart-gallery.

After creating the remote repo, use GitHub Desktop software or the command-line to download or "clone" it onto your computer. Choose a familiar download location like the Desktop.

After cloning the repo, navigate there from the command-line:

cd ~/Desktop/chart-gallery

Use your text editor or the command-line to create a file in that repo called "three_charts.py", and then place the following contents inside:

# three_charts.py

#
# CHART 1 (PIE)
#

pie_data = [
    {"company": "Company X", "market_share": 0.55},
    {"company": "Company Y", "market_share": 0.30},
    {"company": "Company Z", "market_share": 0.15}
]

print("----------------")
print("GENERATING PIE CHART...")
print(pie_data) # TODO: create a pie chart based on the pie_data

#
# CHART 2 (LINE)
#

line_data = [
    {"date": "2019-01-01", "stock_price_usd": 100.00},
    {"date": "2019-01-02", "stock_price_usd": 101.01},
    {"date": "2019-01-03", "stock_price_usd": 120.20},
    {"date": "2019-01-04", "stock_price_usd": 107.07},
    {"date": "2019-01-05", "stock_price_usd": 142.42},
    {"date": "2019-01-06", "stock_price_usd": 135.35},
    {"date": "2019-01-07", "stock_price_usd": 160.60},
    {"date": "2019-01-08", "stock_price_usd": 162.62},
]

print("----------------")
print("GENERATING LINE GRAPH...")
print(line_data) # TODO: create a line graph based on the line_data

#
# CHART 3 (HORIZONTAL BAR)
#

bar_data = [
    {"genre": "Thriller", "viewers": 123456},
    {"genre": "Mystery", "viewers": 234567},
    {"genre": "Sci-Fi", "viewers": 987654},
    {"genre": "Fantasy", "viewers": 876543},
    {"genre": "Documentary", "viewers": 283105},
    {"genre": "Action", "viewers": 544099},
    {"genre": "Romantic Comedy", "viewers": 121212}
]

print("----------------")
print("GENERATING BAR CHART...")
print(bar_data) # TODO: create a horizontal bar chart based on the bar_data

Make sure to save Python files like this whenever you're done editing them. After setting up a virtual environment, we will be ready to run this file.

Environment Setup

Create and activate a new Anaconda virtual environment:

conda create -n charts-env python=3.8 # (first time only)
conda activate charts-env

From within the virtual environment, install any packages you might need (see "Instructions" below):

pip install matplotlib # (only if using matplotlib)
pip install plotly # (only if using plotly)
pip install pandas altair # (only if using altair)
pip install seaborn # (only if using seaborn)

From within the virtual environment, demonstrate your ability to run the Python script from the command-line:

python three_charts.py

If you see the provided data structures, you're ready to move on to project development. This would be a great time to make any desired modifications to your project's "README.md" file (like adding instructions for how to setup and run the app like you've just done), and then make your first commit, with a message like "Setup the repo".

Instructions

You'll need to write Python code to convert the provided data structures into charts.

The instructions in the "Research" and "Investigation" sections below can help you get started on your own. Otherwise, you might consult the notes for one of the following Python charting packages to help you get started:

Generally the approach you should try to follow is something like:

  1. Identify the problem or goal (e.g. "how to make charts in Python?").

  2. Identify potential solutions (e.g. various charting packages).

  3. Evaluate potential solutions to determine popularity and usability.

  4. Choose a package to further investigate, and complete each of the following steps in order before moving on to the next:

    1. See if you can make one of the example charts provided by that package's documentation (without changing any or much of the example code).

    2. See if you can make the specific kind of chart you're interested in making (e.g. bar chart), after finding a corresponding example provided by that package's documentation (without changing any or much of the example code).

    3. See if you can chart your desired dataset instead of the dataset provided by the chart example.

    4. For chart configuration and styling efforts, search the package documentation for information about the kind of change you'd like to make (e.g. "how to format x axis labels as USD?" or "how to display a chart title?"). Then implement the suggested changes one step at a time, using scientific method to make a small change to the working chart code and seeing how the change affects the chart display. Repeat until the chart looks the way you'd like!

Research Phase

Search the Internet to identify a handful of potential third-party Python packages which can produce data visualizations. Consult their official documentation, GitHub source code repositories, and a variety of credible third-party sources to familiarize yourself with the relative popularity and usability of each package.

As you find helpful online resources and documentation, assemble a list of URLs for future reference and attribution purposes.

Investigation Phase

After identifying a few potential dataviz packages, use your judgment about their relative popularity and usability to choose one to investigate further.

From within your project's virtual environment, use Pip to install your selected package according to its installation instructions.

Either in the "three_charts.py" file or in a separate scratch-work file called something like "investigate.py", see if you can write Python code to implement some of the simpler examples from your chosen package's documentation. Commit your code incrementally as you make progress and reach certain milestones.

If at any time you think you'd like to investigate a different package, be open to doing so, perhaps in a separate scratch-work file. You might have to try a few different options before you find a package that works best for you. Take your time and enjoy the investigation process.

Development Phase

Once you're comfortable in your ability to make an example chart using your chosen package, adapt the contents of the "three_charts.py" script to process the provided data structures into three respective charts (i.e. pie, line, horizontal bar).

Focus on one chart at a time. Commit your code incrementally as you make progress and reach certain milestones. Make at least one commit per chart.

Prefer to generate a draft version of each chart before moving on to customizing the intricate details of each (e.g. chart formatting and style).

PreviousSetting up your Local Development EnvironmentNext"Run the App" Exercise

Last updated 4 years ago

Was this helpful?

(recommended)

The matplotlib Package
The plotly Package
The altair Package
The seaborn Package