How to disable the minor ticks of log-plot in Matplotlib?

Here is a simple plot:

enter image description here

1) How to disable the ticks?
2) How to reduce their number?

Here is a sample code:

from pylab import *
import numpy as np

x = [5e-05, 5e-06, 5e-07, 5e-08, 5e-09, 5e-10]
y = [-13, 14, 100, 120, 105, 93]

def myfunc(x,p):
    sl,yt,yb,ec=p    
    y = yb + (yt-yb)/(1+np.power(10, sl*(np.log10(x)-np.log10(ec))))
    return y

xp = np.power(10, np.linspace(np.log10(min(x)/10), np.log10(max(x)*10), 100))

pxp=myfunc(xp, [1,100,0,1e-6])
subplot(111,axisbg="#dfdfdf")
plt.plot(x, y, '.', xp, pxp, 'g-', linewidth=1)   
plt.xscale('log')

plt.grid(True,ls="-", linewidth=0.4, color="#ffffff", alpha=0.5)


plt.draw()
plt.show()

Which produces:
enter image description here

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

plt.minorticks_off()

Turns em off!

To change the number of them/position them, you can use the subsx parameter. like this:

plt.xscale('log', subsx=[2, 3, 4, 5, 6, 7, 8, 9])

From the docs:

subsx/subsy: Where to place the subticks between each major tick.
Should be a sequence of integers. For example, in a log10 scale: [2,
3, 4, 5, 6, 7, 8, 9]

will place 8 logarithmically spaced minor ticks between each major
tick.

Method 2

Calling plt.minorticks_off() will apply this to the current axis. (The function is actually a wrapper to gca().minorticks_off().)

You can also apply this to an individual axis in the same way:

import matplotlib.pyplot as plt
fig, ax = plt.subplots()

ax.minorticks_off()

Method 3

from pylab import *
import numpy as np


x = [5e-05, 5e-06, 5e-07, 5e-08, 5e-09, 5e-10]
y = [-13, 14, 100, 120, 105, 93]

def myfunc(x,p):
    sl,yt,yb,ec=p    
    y = yb + (yt-yb)/(1+np.power(10, sl*(np.log10(x)-np.log10(ec))))
    return y

xp = np.power(10, np.linspace(np.log10(min(x)/10), np.log10(max(x)*10), 100))

pxp=myfunc(xp, [1,100,0,1e-6])
ax=subplot(111,axisbg="#dfdfdf")
plt.plot(x, y, '.', xp, pxp, 'g-', linewidth=1)   
plt.xscale('log')
plt.grid(True,ls="-", linewidth=0.4, color="#ffffff", alpha=0.5)
plt.minorticks_off() # turns off minor ticks

plt.draw()
plt.show()


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x