title: plot from pandas dataframe with negative and positive values
body: <p>I have a dataframe which looks like this:</p>
  
  <pre><code>MM Initial Energy   MM Initial Angle    QM Energy   QM Angle
  0   13.029277   120.0   18.048  120.0
  1   11.173115   125.0   15.250  125.0
  2   9.411475    130.0   12.668  130.0
  3   7.762888    135.0   10.309  135.0
  4   6.239025    140.0   8.180   140.0
  5   4.853004    145.0   6.286   145.0
  6   3.617394    150.0   4.633   150.0
  7   2.544760    155.0   3.226   155.0
  8   1.646335    160.0   2.070   160.0
  9   0.934298    165.0   1.166   165.0
  10  0.419003    170.0   0.519   170.0
  11  0.105913    175.0   0.130   175.0
  12  0.000000    -180.0  0.000   -180.0
  13  0.105988    -175.0  0.130   -175.0
  14  0.420029    -170.0  0.519   -170.0
  15  0.937312    -165.0  1.166   -165.0
  16  1.650080    -160.0  2.070   -160.0
  17  2.548463    -155.0  3.227   -155.0
  18  3.621227    -150.0  4.633   -150.0
  19  4.856266    -145.0  6.286   -145.0
  20  6.236939    -140.0  8.180   -140.0
  21  7.760035    -135.0  10.309  -135.0
  22  9.409117    -130.0  12.669  -130.0
  23  11.170671   -125.0  15.251  -125.0
  24  13.033293   -120.0  18.048  -120.0
  </code></pre>
  
  <p>I want to plot the data with Angles on the x-axis and energy on the y. This sounds fairly simple, however what happens is that pandas or matplotlib sorts the X-axis values in a such a manner that my plot looks split. This is what it looks like:</p>
  
  <p><a href="https://i.stack.imgur.com/02vR8.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/02vR8.png" alt="original"></a></p>
  
  <p>However, this is how I want it:</p>
  
  <p><a href="https://i.stack.imgur.com/QNKWc.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/QNKWc.png" alt="wanted plot"></a>
  My code is as follows:</p>
  
  <pre><code>df=pd.read_fwf('scan_c1c2c3h31_orig.txt', header=None, prefix='X')
  
  df.rename(columns={'X0':'MM Initial Energy',
                            'X1':'MM Initial Angle',
                            'X2':'QM Energy', 'X3':'QM Angle'}, 
                   inplace=True)
  
  df=df.sort_values(by=['MM Initial Angle'], axis=0, ascending=True)
  df=df.reset_index(drop=False)
  
  df2=pd.read_fwf('scan_c1c2c3h31.txt', header=None, prefix='X')
  df2.rename(columns={'X0':'MM Energy',
                            'X1':'MM Angle',
                            'X2':'QM Energy', 'X3':'QM Angle'}, 
                   inplace=True)
  df2=df2.sort_values(by=['MM Angle'], axis=0, ascending=True)
  df2=df2.reset_index(drop=False)
  df
  df2
  ax = plt.axes()
  
  df.plot(y="MM Initial Energy", x="MM Initial Angle", color='red', linestyle='dashed',linewidth=2.0, ax=ax, fontsize=20, legend=True)
  
  df2.plot(y="MM Energy", x="MM Angle", color='red', ax=ax, linewidth=2.0, fontsize=20, legend=True)
  
  df2.plot(y="QM Energy", x="QM Angle", color='blue', ax=ax, linewidth=2.0, fontsize=20, legend=True)
  
  plt.ylim(-0.05, 6)
  
  ax.xaxis.set_major_locator(MultipleLocator(20))
  ax.xaxis.set_minor_locator(MultipleLocator(10))
  ax.yaxis.set_minor_locator(MultipleLocator(0.5))
  
  plt.xlabel('Angles (Degrees)', fontsize=25)
  plt.ylabel('Energy (kcal/mol)', fontsize=25)
  </code></pre>
  
  <p>What I am doing is, sorting the dataframe by 'MM Angles'/'MM Initial Angles' to avoid plot "scarambling" due to repeating values in the y-axis.The angles vary from -180 to 180, where I want the -180 and +180 next to each other.</p>
  
  <p>I have tried sorting the negative values in ascending order and positive values in descending order as suggested in <a href="https://stackoverflow.com/questions/39009259/how-to-sort-a-series-with-positive-value-in-assending-order-and-negative-value-i">this post</a>, but I still get the same plot where x axis ranges from -180 to +180.
  I have also tried matplotlib axis <a href="https://matplotlib.org/3.1.1/api/spines_api.html" rel="nofollow noreferrer">spines</a> to recenter the plot, and I have also tried inverting the x-axis as suggested <a href="https://stackoverflow.com/questions/29908874/x-axis-inverted-unexpectedly-by-pandas-plot">in this post</a>, but still get the same plot. Additionally, I have also tried suggestion in <a href="https://stackoverflow.com/questions/58056316/sort-values-of-a-dataframe-column-based-on-positive-and-negative-values">this another post</a>. 
  Any help will be appreciated.</p>