title: How do I show the "X" axis scale in hours, minutes and seconds in Python?
body: <p>Data were converted using Python dictionary according to <a href="https://stackoverflow.com/questions/56826768/create-a-new-table-in-python/56827170#56827170">Create a new table in Python</a> user titusarmah99 <a href="https://stackoverflow.com/users/8363478/titusarmah99">https://stackoverflow.com/users/8363478/titusarmah99</a></p>
  
  <pre><code>import datetime
  import numpy as np
  import seaborn as sb 
  import pandas as pd
  import matplotlib.pyplot as plt
  plt.style.use("ggplot")
  
  
  %matplotlib inline 
  
  
  %config InlineBackend.figure_format='svg'}
  </code></pre>
  
  <p><strong>Reading the Sandvik.log and Iscar.log files.</strong></p>
  
  <pre><code>            data=[]
          with open('Sandvik.log','r') as file:
              for row in file:
                  data.append(row.rstrip('\n').split('|'))
          columns =['DateTime','Xload']
  
          data_dic = []
          for row in data:
              tmp ={}
              tmp['DateTime']=row[0]
              for i in range(1,len(row)-1):
                  if row[i] in columns:
                      tmp[row[i]]=row[i+1]
              for c in columns:
                  if c not in tmp:
                      tmp[c] = '' #for rows which donot have the property
              data_dic.append(tmp)
  
              dfs = pd.DataFrame(data_dic)
          print (dfs.dtypes)
  
  
  
      # Reading Iscar.log    
  
      data=[]
      with open('Iscar.log','r') as file:
          for row in file:
              data.append(row.rstrip('\n').split('|'))
      columns =['DateTime','Xload']
  
      data_dic = []
      for row in data:
          tmp ={}
          tmp['DateTime']=row[0]
          for i in range(1,len(row)-1):
              if row[i] in columns:
                  tmp[row[i]]=row[i+1]
          for c in columns:
              if c not in tmp:
                  tmp[c] = '' #for rows which donot have the property
          data_dic.append(tmp)
  
          dfi = pd.DataFrame(data_dic)
      print (dfi.dtypes) 
  
  
      # Converting the Xload and Datetime variables
      dfs['Xload']=pd.to_numeric(dfs.Xload)
  
      dfs['DateTime']= pd.to_datetime(dfs['DateTime']) 
  
      dfi['Xload']=pd.to_numeric(dfi.Xload)
  
      dfi['DateTime']= pd.to_datetime(dfi['DateTime']) 
  
  
  # removing null data
  dfs.dropna(inplace=True)
  dfi.dropna(inplace=True)
  
  
  # Reset the DataFrame
  dfs.reset_index(drop=True, inplace=True)
  dfi.reset_index(drop=True, inplace=True)
  </code></pre>
  
  <p><strong>Graphing the Xload variable for the Sandvik DataFrame.</strong></p>
  
  <pre><code>dfs.plot('DateTime', color = "red", figsize = (8, 6))
  
  plt.ylim(0,100) # scale up to 100% for Y axis
  
  # creating subtitles
  plt.legend(['Sandvik'], loc='upper left') 
  plt.title("Machining Time vs. Xload Power")
  plt.xlabel("Machining Time")
  plt.ylabel("% in Xload variable")
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/KJuIv.jpg" rel="nofollow noreferrer"><strong>Dataframe Sandvik Chart</strong></a></p>
  
  <p><strong>Graphing the Xload variable for the Iscar DataFrame</strong></p>
  
  <pre><code>dfi.plot('DateTime', color = "royalblue", figsize = (8, 6))
  
  plt.ylim(0,100)
  
  # creating subtitles
  plt.legend(['Iscar'], loc='upper left') 
  plt.title("Machining Time vs Xload Power")
  plt.xlabel("Machining Time")
  plt.ylabel("% in Xload variable")
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/1mFoD.jpg" rel="nofollow noreferrer"><strong>Dataframe Iscar Chart</strong></a></p>
  
  <p><strong>I cannot scale the hour, minute and second to the "X" axis after joining both graphs.</strong></p>
  
  <pre><code>plt.figure(figsize = (10, 6))
  
  for frame in [dfs, dfi]:
      plt.plot(frame['Xload'])
  
  
  #plt.xlim()
  plt.ylim(0,100)
  
  # Criando as legendas
  plt.legend(['Sandvik', 'Iscar'], shadow=True, loc='upper left') 
  plt.title("Machining Time vs Xload Power")
  plt.xlabel("Machining Time")
  plt.ylabel("% in Xload variable")
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/LBMLE.jpg" rel="nofollow noreferrer"><strong>Grouped Charts</strong></a></p>
  
  <p>I will only use the scale in seconds dt.strftime ('% S').
  I need to <strong>overlay</strong> the graphs (Sandvik and Iscar) and change the ordered X-axis scale <strong>every 5 seconds</strong>.</p>
  
  <pre><code>dfs['DateTime'] = dfs['DateTime'].dt.strftime('%S') 
  dfi['DateTime'] = dfi['DateTime'].dt.strftime('%S')
  
  # overlapping graphics
  plt.figure(figsize = (10, 4))
  for frame in [dfs, dfi]:
      plt.plot(frame['Xload'])
      plt.legend(['Sandvik', 'Iscar'], loc='upper left') #plot da legend
  
  #plt.xlim()
  plt.ylim(0,100)
  
  
  # using seaborn
  x1 = dfs['DateTime']
  x2 = dfi['DateTime']
  y1 = dfs['Xload']
  y2 = dfi['Xload']
  
  f, (ax1, ax2) = plt.subplots(ncols=2, nrows=1, sharey=True, figsize=(10,4))
  ax = sns.lineplot(x=x1, y=y1, ax=ax1, color='blue', label='Sardvik', ci=None)
  ax = sns.lineplot(x=x2, y=y2, ax=ax2, color='red', label='Iscar', ci=None)
  
  ax1.set_xlim(min(x1), max(x1))
  ax2.set_xlim(min(x2), max(x2))
  ax1.set_xlabel('Machine Time')
  ax2.set_xlabel('Machine Time')
  ax1.set_ylabel('% in Xload variable')
  ax1.set_xticks(ax1.get_xticks()[::5])
  ax2.set_xticks(ax2.get_xticks()[::5])
  plt.setp( ax1.xaxis.get_majorticklabels(), rotation=90 )
  plt.setp( ax2.xaxis.get_majorticklabels(), rotation=90 )
  </code></pre>
  
  <p><a href="https://i.stack.imgur.com/HVysj.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/HVysj.png" alt="enter image description here"></a></p>