Typing and Data Visualization

Introduction

  • Lecture 13 on Typing and Data Visualization from Department of Informatics, UC Irvine.
  • Important: Duplication of course material for commercial purposes without permission is prohibited.

A3 Assignment Insights

  • Admin Mode:
    • Optional to keep; helps in decoupling tasks from user interaction.
  • Core Functionality:
    • Most ideas for core functionality are from previous lectures.
  • Resources:
    • Regularly check posts at the class website: https://ics32distributedsocial.com/
    • Reminder to be polite as server logs address information to prevent DoS attacks on the server.

Code Quality Considerations

  • PEP8 Violations:

    • Current testing focuses on PEP8 for style violations through pycodestyle.
  • Potential Issues Beyond PEP8:

    • Bad variable/function naming (e.g., single letters like "f", "r").
    • Lack of documentation – functions/classes must include docstrings.
    • Excessive nested structures or branches.
    • Improperly structured main block (too much logic inside if __name__ == "__main__":).
    • No exception handling.
  • Improvement Over Time:

    • Discussed that avoiding these issues is easier with experience.
  • Use of Code Linters:

    • Recommended: Always run a linter like pylint before submitting assignments.
    • Linting helps in identifying potential quality issues through static code analysis.

Example of Poor Code Submission

  • Characteristics of Bad Code Submission:
    • Code works but is hard to maintain and extend.
    • Need to break code into smaller functions for better readability and management.

Typing in Python

  • Type Inference:
    • Python dynamically infers variable types and does not enforce them after initial assignment.
    • Function usage defines how variables are treated.
    • Concept of Duck Typing: An object’s suitability is determined by whether it behaves as expected, regardless of its type.

Inheritance and Abstract Classes

  • Abstract Classes:
    • A class that serves as a blueprint for other classes but is not instantiated itself.
    • Example of abstract classes includes base types like "Number" and specific subclasses like "Integer", "Float", etc.
  • Abstract Methods:
    • Methods that must be defined in child classes without an implementation in the abstract base class.

Data Visualization Fundamentals

  • Importance of Visualization:
    • Core task when dealing with data, can also apply to understanding software.
  • Visualization Methods:
    • Libraries in Python provide different paradigms:
      • 2D / 3D outputs
      • Interactive vs. Non-interactive
      • Local vs. Web-based.
  • Key Visualization Libraries:
    • matplotlib, seaborn, plotnine, plot.ly, and Bokeh.
    • Installation: Use pip install <lib_name>.

Using Matplotlib for Visualization

  • Creating Visuals with Matplotlib:
    • Figure and Axis Creation:
      • Begin by creating a figure and adjusting size/layout.
    • Adding Data to Plot:
      • Default plotting is a line via ax.plot().
    • Labeling Axes:
      • Essential to define X and Y axis labels.
    • Rendering the Plot:
      • Save or display the plot with plt.savefig() or plt.show().

Building a Simple Weather API Tool

  • Example Tool:
    • Tool for fetching daily weather data via a web API.
  • Data Extraction and Plotting Process:
    • Use standard libraries (urllib, json) to retrieve and process weather data.
    • Create figures reflecting temperature patterns alongside data timestamps.
  • Code Structure:
    • Separate concerns (data fetching and plotting) into distinct functions for clarity and maintenance.