Plot multiple separate graphs for same data from one Python script - GeeksforGeeks

13 Sep, 2021

It is very easy to plot different kinds of maps and plots of different data using Python. One such useful library in Python is Matplotlib which is very useful for creating different types of plots using the same data.
The easiest way to install Matplotlib is by using the pip command in the command-line as shown below:
pip install matplotlib
Also, we use numpy and pandas libraries for creating and using the data sets. Therefore, installing numpy and pandas library can also be done using pip command in command-line.
pip install numpy 
pip install pandas
To make plots creative and easy to find the located data inside the graph we use the plotly and cufflinks libraries. To use these libraries the method of installation is also the same as above mentioned libraries. 
pip install chart_studio.plotly
pip install cufflinks
In this article, we will create a Plotter that enables us to create different types of plots using the same data.
In this program, we first give the option for choosing the data set required to plot the graph. There are 3 options available for that using if-elif statements. 
Creating random data using 100 rows and 5 columns
User input data set with 4 rows and 5 columns
Upload the CSV/JSON file
The second step is to decide the plot to be plotted with the entire data set or for specific columns. And lastly, we present different kinds of plotters users want to plot their data and plot the graph accordingly. 
Below is the implementation:
Python3
 

 
 










# importing required libraries
import numpy as np
import pandas as pd
import chart_studio.plotly as pl
import plotly.offline as po
import cufflinks as cf
po.init_notebook_mode(connected = True)
cf.go_offline()
 
# define a function for creating
# data set for plotting graph
def createdata(data):
   
    # creating random data set
    if(data == 1):
        x = np.random.rand(100,5) 
        df1 = pd.DataFrame(x, columns = ['A', 'B',
                                        'C', 'D',
                                        'E'])
         
    # creating user data set with input
    elif(data == 2):            
        x = [0, 0, 0, 0, 0]
        r1 = [0, 0, 0, 0, 0]
        r2 = [0, 0, 0, 0, 0]
        r3 = [0, 0, 0, 0, 0]
        r4 = [0, 0, 0, 0, 0]
         
        print('Enter the values for columns')
        i = 0
         
        for i in [0, 1, 2, 3, 4]:
            x[i] = input()
            i = i + 1
        print('Enter the values for first row')
        i = 0
         
        for i in [0, 1, 2, 3, 4]:
            r1[i] = int(input())
            i = i + 1
             
        print('Enter the values for second row')
        i = 0
         
        for i in [0, 1, 2, 3, 4]:
            r2[i] = int(input())
            i = i + 1
             
        print('Enter the values for third row')
        i = 0
         
        for i in [0, 1, 2, 3, 4]:
            r3[i] = int(input())
            i = i + 1
             
        print('Enter the values for fourth row')
        i = 0
         
        for i in [0, 1, 2, 3, 4]:
            r4[i] = int(input())
            i = i + 1
             
        df1 = pd.DataFrame([r1,r2,r3,r4] , 
                           columns = x)
    # creating data set by csv file   
    elif(data == 3):            
        file = input('Enter the file name')
        x = pd.read_csv(file)
        df1 = pd.DataFrame(x)
         
    else:
        print('DataFrame creation failed please' +
              'enter in between 1 to 3 and try again')
         
    return df1
 
# define a function for 
# types of plotters
def plotter(plot):
   
    if(plot == 1):
        finalplot = df1.iplot(kind = 'scatter')
         
    elif(plot == 2):
        finalplot = df1.iplot(kind = 'scatter', mode = 'markers',
                              symbol = 'x', colorscale = 'paired')
    elif(plot == 3):
        finalplot = df1.iplot(kind = 'bar')
         
    elif(plot == 4):
        finalplot = df1.iplot(kind = 'hist')
         
    elif(plot == 5):
        finalplot = df1.iplot(kind = 'box')
         
    elif(plot == 6):
        finalplot = df1.iplot(kind = 'surface')
         
    else:
        finalplot = print('Select only between 1 to 7')
         
    return finalplot
 
# define a function for allowing
# to plot for specific rows and columns
def plotter2(plot):            
   
    col = input('Enter the number of columns you' +
                'want to plot by selecting only 1 , 2 or 3')
     
    col = int(col)
     
    if(col==1):
       
        colm = input('Enter the column you want to plot' +
                     'by selecting any column from dataframe head')
        if(plot == 1):
            finalplot = df1[colm].iplot(kind = 'scatter')
             
        elif(plot == 2):
            finalplot = df1[colm].iplot(kind = 'scatter', mode = 'markers',
                                        symbol = 'x', colorscale = 'paired')
        elif(plot == 3):
            finalplot = df1[colm].iplot(kind = 'bar')
             
        elif(plot == 4):
            finalplot = df1[colm].iplot(kind = 'hist')
             
        elif(plot == 5):
            finalplot = df1[colm].iplot(kind = 'box')
             
        elif(plot == 6 or plot == 7):
            finalplot = print('Bubble plot and surface plot require' +
                              'more than one column arguments')
        else:
            finalplot = print('Select only between 1 to 7')
             
    elif(col == 2):
       
        print('Enter the columns you want to plot' +
              'by selecting from dataframe head')
         
        x = input('First column')
        y = input('Second column')
         
        if(plot == 1):
            finalplot = df1[[x,y]].iplot(kind = 'scatter')
             
        elif(plot == 2):
            finalplot = df1[[x,y]].iplot(kind = 'scatter', mode = 'markers', 
                                         symbol = 'x', colorscale = 'paired')
        elif(plot == 3):
            finalplot = df1[[x,y]].iplot(kind = 'bar')
             
        elif(plot == 4):
            finalplot = df1[[x,y]].iplot(kind = 'hist')
             
        elif(plot == 5):
            finalplot = df1[[x,y]].iplot(kind = 'box')
             
        elif(plot == 6):
            finalplot = df1[[x,y]].iplot(kind = 'surface')
             
        elif(plot == 7):
            size = input('Please enter the size column for bubble plot')
            finalplot = df1.iplot(kind = 'bubble', x = x,
                                  y = y, size = size)
        else:
            finalplot = print('Select only between 1 to 7')
             
    elif(col == 3):
       
        print('Enter the columns you want to plot')
        x = input('First column')
        y = input('Second column')
        z = input('Third column')
          
        if(plot == 1):
            finalplot = df1[[x,y,z]].iplot(kind = 'scatter')
             
        elif(plot == 2):
            finalplot = df1[[x,y,z]].iplot(kind = 'scatter', mode = 'markers',
                                           symbol = 'x' ,colorscale = 'paired')
        elif(plot == 3):
            finalplot = df1[[x,y,z]].iplot(kind = 'bar')
             
        elif(plot == 4):
            finalplot = df1[[x,y,z]].iplot(kind = 'hist')
             
        elif(plot == 5):
            finalplot = df1[[x,y,z]].iplot(kind = 'box')
             
        elif(plot == 6):
            finalplot = df1[[x,y,z]].iplot(kind = 'surface')
             
        elif(plot == 7):
            size = input('Please enter the size column for bubble plot')
             
            finalplot = df1.iplot(kind = 'bubble', x = x, y = y, 
                                  z = z, size = size )
        else:
            finalplot = print('Select only between 1 to 7')
    else:
        finalplot = print('Please enter only 1 , 2 or 3')
    return finalplot
 
# define a main function 
# for asking type of plot
# and calling respective function
def main(cat):    
   
    if(cat == 1):
       
        print('Select the type of plot you need to plot by writing 1 to 6')
        print('1.Line plot')
        print('2.Scatter plot')
        print('3.Bar plot')
        print('4.Histogram')
        print('5.Box plot')
        print('6.Surface plot')
        plot = int(input())
        output = plotter(plot)
         
    elif(cat == 2):
       
        print('Select the type of plot you need to plot by writing 1 to 7')
        print('1.Line plot')
        print('2.Scatter plot')
        print('3.Bar plot')
        print('4.Histogram')
        print('5.Box plot')
        print('6.Surface plot')
        print('7.Bubble plot')
        plot = int(input())
        output = plotter2(plot)
         
    else:
        print('Please enter 1 or 2 and try again')  
         
print('Select the type of data you need to plot(By writing 1,2 or 3)')
print('1.Random data with 100 rows and 5 columns')
print('2.Customize dataframe with 5 columns and. 4 rows')
print('3.Upload csv/json/txt file')
 
data = int(input())
df1 = createdata(data)
print('Your DataFrame head is given below check the columns to plot using cufflinks')
 
df1.head()
print('What kind of plot you need , the complete data plot or columns plot')
cat = input('Press 1 for plotting all columns or press 2 for specifying columns to plot')
cat = int(cat)
 
main(cat)






  
Output:
 
Scatter plot:
 
 Scatter graph plot
Histogram plot:
 
Histogram plot 
Boxplot:
 
Boxplot 
 
simmytarika5
anikakapoor

Data Visualization


python-utility


Python

Writing code in comment? 
                                    Please use ide.geeksforgeeks.org, 
                                    generate link and share the link here.
                                
How to Install PIP on Windows ?
How to drop one or multiple columns in Pandas Dataframe
How To Convert Python Dictionary To JSON?
Check if element exists in list in Python
Python | Pandas dataframe.groupby()
Defaultdict in Python
Python | Get unique values from a list
Python Classes and Objects
Python | os.path.join() method
Create a directory in Python