简体   繁体   中英

Axis labels not spacing correctly

I am trying to plot column data vs the row label of a data frame. When I do so, the plot looks good but the the Y axis starts to look illegible as the number of rows is increased. What I don't get it why does the automatic spacing for the X axis work fine but not the same for the Y axis.

x1 = M.iloc[:,1]
plt.plot(x1,x)

Where the variable "x" represents Column 0 values of dataframe "M" below

在此处输入图像描述

The "M" dataframe:

            0.0         0.5   1.0
0           300  300.000000  1550
1.00e-01 s  300  300.769527  1550
2.00e-01 s  300  301.538106  1550
3.00e-01 s  300  302.305739  1550
.
.
.
2.80e+00 s  300  321.192396  1550
2.90e+00 s  300  321.935830  1550

Edit

So it seems it's the formatting of the first column being in scientific notation that is messing things up, still not sure why however

x = [0]
i=1
while i < 30:
    q = i*0.1
    xx = str('{:.2e}'.format(q)) + ' s'
    x.append(xx)
    i = i + 1

M = pd.DataFrame(index=x, columns=3)

So in the code above, it is the line xx = str('{:.2e}'.format(q)) + ' s' that is making the Y-labels go crazy. I unfortunately can't take it out as I need them to be in scientific notation.

You can try tick-spacing if okay to eliminate few tick labels. Other options are to increase you plot size or decrase font size for y labels.

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker

x1 = M.iloc[:,1]


tick_spacing = 2 # or whatever label gap you want to use.

fig, ax = plt.subplots(1,1)
apx.plot(x1,x)
ax.yaxis.set_major_locator(ticker.MultipleLocator(tick_spacing))
plt.show()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM