Skip to content
Introduction to Data Visualization with Matplotlib
  • AI Chat
  • Code
  • Report
  • Introduction to Data Visualization with Matplotlib

    Plotting time-series

    # Import pandas as pd
    
    import pandas as pd
    
    # Read the data from file using read_csv
    climate_change = pd.read_csv("datasets/climate_change.csv", parse_dates=['date'],index_col='date') 
    import matplotlib.pyplot as plt
    fig, ax = plt.subplots()
    
    # Add the time-series for "relative_temp" to the plot
    ax.plot(climate_change.index,climate_change["relative_temp"])
    
    # Set the x-axis label
    ax.set_xlabel('Time')
    
    # Set the y-axis label
    ax.set_ylabel('Relative temperature (Celsius)')
    
    # Show the figure
    plt.show()
    import matplotlib.pyplot as plt
    
    # Use plt.subplots to create fig and ax
    fig, ax = plt.subplots()
    
    # Create variable seventies with data from "1970-01-01" to "1979-12-31"
    seventies = climate_change["1970-01-01":"1979-12-31"]
    
    # Add the time-series for "co2" data from seventies to the plot
    ax.plot(seventies.index, seventies["co2"])
    
    # Show the figure
    plt.show()
    import matplotlib.pyplot as plt
    
    # Initalize a Figure and Axes
    fig, ax = plt.subplots()
    
    # Plot the CO2 variable in blue
    ax.plot(climate_change.index, climate_change["co2"], color='blue')
    
    # Create a twin Axes that shares the x-axis
    ax2 = ax.twinx()
    
    # Plot the relative temperature in red
    ax2.plot(climate_change.index, climate_change["relative_temp"], color="red")
    
    plt.show()
    # Define a function called plot_timeseries
    def plot_timeseries(axes, x, y, color, xlabel, ylabel):
    
      # Plot the inputs x,y in the provided color
      axes.plot(x, y, color=color)
    
      # Set the x-axis label
      axes.set_xlabel(xlabel)
    
      # Set the y-axis label
      axes.set_ylabel(ylabel, color=color)
    
      # Set the colors tick params for y-axis
      axes.tick_params('y', colors=color)
    fig, ax = plt.subplots()
    
    # Plot the CO2 levels time-series in blue
    plot_timeseries(ax, climate_change.index, climate_change["co2"], "blue", "Time (years)", "CO2 levels")
    
    # Create a twin Axes object that shares the x-axis
    ax2 = ax.twinx()
    
    # Plot the relative temperature data in red
    plot_timeseries(ax2, climate_change.index, climate_change["relative_temp"], "red", "Time (years)", "Relative temperature (Celsius)")
    
    plt.show()
    fig, ax = plt.subplots()
    
    # Plot the relative temperature data
    ax.plot(climate_change.index,  climate_change["relative_temp"])
    
    # Annotate the date at which temperatures exceeded 1 degree
    ax.annotate('>1 degree', xy=(pd.Timestamp('2015-10-06'), 1))
    
    plt.show()
    fig, ax = plt.subplots()
    
    # Plot the CO2 levels time-series in blue
    plot_timeseries(ax, climate_change.index,climate_change["co2"], 'blue', "Time (years)", "CO2 levels")
    
    # Create an Axes object that shares the x-axis
    ax2 = ax.twinx()
    
    # Plot the relative temperature data in red
    plot_timeseries(ax2, climate_change.index , climate_change["relative_temp"], 'red', "Time (years)", "Relative temp (Celsius)")
    
    # Annotate point with relative temperature >1 degree
    ax2.annotate(">1 degree", xy=(pd.Timestamp('2015-10-06 00:00:00'), 1),  xytext=(pd.Timestamp('2008-10-06'), -0.2),arrowprops={"arrowstyle":"->", "color":"gray"})
    
    plt.show()

    Quantitative comparisons and statistical visualizations

    fig, ax = plt.subplots()
    
    # Plot a bar-chart of gold medals as a function of country
    ax.bar(medals.index,medals["Gold"])
    
    # Set the x-axis tick labels to the country names
    ax.set_xticklabels(medals.index, rotation=90)
    
    # Set the y-axis label
    ax.set_ylabel("Number of medals")
    
    plt.show()
    # Add bars for "Gold" with the label "Gold"
    ax.bar(medals.index, medals["Gold"], label="Gold")
    
    # Stack bars for "Silver" on top with label "Silver"
    ax.bar(medals.index, medals["Silver"], bottom=medals["Gold"], label="Silver")
    
    # Stack bars for "Bronze" on top of that with label "Bronze"
    ax.bar(medals.index, medals["Bronze"], bottom=medals["Gold"] + medals["Silver"], label="Bronze")
    
    # Display the legend
    ax.legend()
    
    plt.show()

    Explore Datasets

    Use the DataFrames imported in the first cell to explore the data and practice your skills!

    • Using austin_weather and seattle_weather, create a Figure with an array of two Axes objects that share a y-axis range (MONTHS in this case). Plot Seattle's and Austin's MLY-TAVG-NORMAL (for average temperature) in the top Axes and plot their MLY-PRCP-NORMAL (for average precipitation) in the bottom axes. The cities should have different colors and the line style should be different between precipitation and temperature. Make sure to label your viz!
    • Using climate_change, create a twin Axes object with the shared x-axis as time. There should be two lines of different colors not sharing a y-axis: co2 and relative_temp. Only include dates from the 2000s and annotate the first date at which co2 exceeded 400.
    • Create a scatter plot from medals comparing the number of Gold medals vs the number of Silver medals with each point labeled with the country name.
    • Explore if the distribution of Age varies in different sports by creating histograms from summer_2016.
    • Try out the different Matplotlib styles available and save your visualizations as a PNG file.