Using gridSpec to arrange multiple plots as Infographics using Python

[2202 views]




Matplotlib library with all its flair, has a specific function named GridSpec(). The basic purpose of this function is to set the geometry of the subplots in a figure. But this function with a bit tweak can be used to present multiple plots into a fig, and covert it into a infographic to demonstrate a story with a minimal amount of coding.

No additional library is required to install for using GridSpec(), it works very efficiently, in case we have the base matplotlib installed with python.

Code:

import matplotlib.pyplot as plt from matplotlib.gridspec import GridSpec data_all_emission = pd.read_csv("annualemission.csv") # considering only last ten records for better demonstration data_all_emission = data_all_emission.tail(10) # Create a 2x2 grid of plots fig, axes = plt.subplots(3, 2, constrained_layout=True, figsize=(20,10)) gs = GridSpec(3, 3, figure=fig) # Plot 1 - Cummulative graph containing all the information - multiple bars axes[0,0].set_title("Year Wise Emission", color="b") data_all_emission.plot(ax=axes[0,0], x="year", y=["nh3", "nox", "so2", "voc", "pm10", "pm25"], kind="bar") # Plot 2 - Cummulative graph containing all the information - stacked bar axes[0,1].set_title("Year Wise Emission", color="b") ax = axes[0,1] data_all_emission.plot(x="year", y="nox", kind="bar", ax=ax) data_all_emission.plot(x="year", y="nh3", kind="bar", ax=ax, color="C6") data_all_emission.plot(x="year", y="so2", kind="bar", ax=ax, color="C2") data_all_emission.plot(x="year", y="voc", kind="bar", ax=ax, color="C3") data_all_emission.plot(x="year", y="pm10", kind="bar", ax=ax, color="C4") data_all_emission.plot(x="year", y="pm25", kind="bar", ax=ax, color="C5") # Plot 3 - Cummulative graph containing all the information - multiple column with line axes[1,0].set_title("", color="b") data_all_emission['pm10'].plot(ax = axes[1,0],kind='bar', color='red') data_all_emission['pm25'].plot(ax = axes[1,0],kind='line', marker='*', color='black', ms=10) # Plot 4 - Pie chart depicting the various emissions contribution for the last year axes[1,1].set_title("", color="b") ax = axes[1,1] ax.axis('equal') data_oneyear_emission = [87.75399456, 28.73753448, 2.500908237, 33.64595918, 24.68887142, 19.91823327] ax.pie(data_oneyear_emission, labels = ["nh3", "nox", "so2", "voc", "pm10", "pm25"],autopct='%1.2f%%') # Plot 5 - Line chart depicting the various emissions contribution axes[2,0].set_title("", color="b") axes[2,0].scatter(data_all_emission["year"], data_all_emission["pm10"], c ="pink",linewidths = 2,marker ="s",edgecolor ="green",s = 50) axes[2,0].scatter(data_all_emission["year"], data_all_emission["pm25"], c ="yellow",linewidths = 2,marker ="^",edgecolor ="red",s = 200) # Plot 6 - Scatter chart depicting various emission axes[2,1].set_title("", color="b") axes[2,1].plot(data_all_emission["year"], data_all_emission["nox"], label = "Nox", linestyle="-") axes[2,1].plot(data_all_emission["year"], data_all_emission["so2"], label = "So2", linestyle="--") axes[2,1].plot(data_all_emission["year"], data_all_emission["pm10"], label = "PM10", linestyle="-.") axes[2,1].plot(data_all_emission["year"], data_all_emission["pm25"], label = "PM25", linestyle=":") # depict illustration fig.suptitle("Emissions in UK for the last 10 years") plt.show()

annualemission.csv file:

year nh3 nox so2 voc pm10 pm25
1970 100 100 100 100 100
1971 99.60866 94.73848 100.2234 91.98165 88.64904
1972 99.24757 90.90876 97.98916 81.36547 77.83722
1973 105.1348 93.41885 103.5091 84.82977 79.18828
1974 98.61177 85.60625 99.59469 77.11811 73.4659
1975 95.78024 81.31908 97.78028 73.09667 64.93709
1976 97.4164 78.62831 100.1002 71.41608 63.7089
1977 97.98779 78.52168 103.2155 70.58038 63.24233
1978 99.4901 79.23909 104.9025 69.12694 60.81718
1979 103.0656 84.19333 107.6771 69.58273 62.19865
1980 100 98.25664 74.52168 104.6946 64.04883 55.17591
1981 99.64473 94.48094 67.67441 102.9414 61.43936 52.52082
1982 102.1541 94.39082 64.76253 103.6882 60.10658 51.66876
1983 102.4576 93.28414 59.77755 103.644 59.26957 49.91486
1984 103.4527 92.13409 57.51615 97.06149 52.983 45.03866
1985 102.5312 95.35628 57.84557 104.1628 58.49267 49.60396
1986 102.0716 98.30005 60.06391 108.1107 60.15754 51.62374
1987 103.205 100.8191 59.82018 109.9201 58.81281 47.46698
1988 101.1894 102.8586 58.89539 112.4591 57.67821 46.51254
1989 99.83748 104.6846 57.13024 114.2833 57.96487 45.92101
1990 102.5252 102.0491 54.90832 117.6629 55.32245 44.19974
1991 101.9632 99.60249 53.85406 115.0473 55.06404 44.22075
1992 98.03191 97.07307 52.44198 111.2425 51.90585 42.44986
1993 96.5465 91.67766 47.67251 105.5006 47.73274 39.24644
1994 98.11881 90.25446 43.36565 100.5698 45.08469 37.40968
1995 96.00009 86.45724 38.97931 93.29078 41.82557 34.35056
1996 98.99587 82.82792 33.17199 90.30169 41.66298 33.78143
1997 100.9373 76.19169 27.04854 86.20335 39.2198 32.1186
1998 101.2941 74.30948 26.90708 79.89956 37.16361 30.54426
1999 99.07644 70.2023 20.73919 72.12927 36.52284 30.23491
2000 96.96427 67.27746 19.83905 66.18495 34.57565 27.55024
2001 94.55035 66.14376 18.77597 63.42441 35.50784 27.43074
2002 93.54306 62.90013 16.90173 59.95043 31.20946 24.35101
2003 91.60464 61.86521 16.42902 55.57003 33.28321 24.5754
2004 91.5741 60.03181 13.93649 52.11064 30.90234 23.96429
2005 89.61648 59.29191 12.14972 48.79004 30.14321 23.66435
2006 88.22146 57.29529 11.44533 47.0125 29.24549 23.23405
2007 87.00332 54.92967 9.97534 45.38723 27.59104 22.04671

Output:

Using gridSpec to arrange multiple plots as Infographics using Python
                 





Comments








Search
Need any Help?


Hot Deals ends in





Earn Money While You Sleep. Join Now to avail Exclusive Bonus




Technical Quiz:



Search Tags