Ryan, my use case is indeed that I want to avoid overlapping ticks and
I want to avoid them by not displaying them. Here is a guy with the
http://stackoverflow.com/questions/9422587/overlapping-y-axis-tick-label-and-x-axis-tick-label-in-matplotlib
I'll just set the ticks manually. Sadly seems like the easiest thing to do.
Post by Virgil StokesTommy,
I'm sorry. I forgot to hit send all *again*. Below is my original message,
but the function I wrote is updated because it wasn't exactly correct....
Ah. I was working on something to help out, so I'm just seeing Eric's very
elegant solution, which I have yet to try. However, I feel like you might
run into some problems if you always drop the first tick. For example, try
______________
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator
import numpy as np
xs = np.linspace(2,12,1000)
ys = np.sin(xs)
n = 5
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(xs, ys)
ax1.xaxis.set_major_locator(MultipleLocator(5))
plt.show()
_____________
In this case, dropping the first tick will result in only one tick on the
screen.
What is your use-case? Are you annoyed that the axis labels are overlapping
at the far left? If that's the case, here's a little function (trimticks)
that I whipped up that might help. It drops the far left or far right label
if it is exactly at the edge of the axes. Should work for y axes as well.
_____________
xmin, xmax = ax.get_xlim()
xmin = xmin+n
xmin = xmin + n - xmin%n
xmax = xmax + n - xmax%n
ticks = np.arange(xmin, xmax, n)
ax.set_xticks(ticks)
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator
import numpy as np
xs = np.linspace(0,20,10000)
ys = np.sin(xs)
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(xs, ys)
trimticks(ax1)
plt.show()
___________________
On Sat, Feb 14, 2015 at 1:45 PM, Tommy Carstensen
Post by Tommy Carstensenimport matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator
return MultipleLocator.tick_values(self, vmin, vmax)[2:]
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.xaxis.set_major_locator(TrimmedMultipleLocator(5))
#xticks[0].label1.set_visible(False)
#xticks[-1].label1.set_visible(False)
#ax1.set_xticks(ax1.xaxis.get_major_ticks()[1:-1])
ax1.plot(list(range(21)))
plt.show()
Here is an example of the use of prune='lower', but it does not allow
http://stackoverflow.com/questions/9422587/overlapping-y-axis-tick-label-and-x-axis-tick-label-in-matplotlib
I think my best bet is to just set those ticks manually.
Post by Eric FiringPost by Tommy CarstensenThanks again Ryan. That's exactly what I want to achieve; i.e. remove
the tick at 0 and only keep 5 and 10. Your solution works, but it's a
bit of hack to use magic constants. I could however get those values
from the xlim.
Eric, I would describe the desired tick placement algorithm as
ax1.xaxis.set_major_locator(MaxNLocator(prune='lower'))
Aha! The problem is that the MaxNLocator is the only one with the prune
kwarg. It could be added to the MultipleLocator. For now, though, you
can make your own specialized Locator, hardwired to omit the first tick,
from matplotlib.ticker import MultipleLocator
return MultipleLocator.tick_values(self, vmin, vmax)[1:]
then just use
ax1.xaxis.set_major_locator(TrimmedMultipleLocator(5))
I haven't tested it--but give it a try. What it is doing is making a
subclass of MultipleLocator, and altering only the one little bit of its
behavior that you want to modify. Everything else is automatically
inherited from the base class, MultipleLocator.
Eric
Post by Tommy Carstensenax1.xaxis.set_major_locator(MultipleLocator(5))
Post by Ryan NelsonTommy, (Sorry for the doubleup. I just realized I forgot to hit reply-all.)
Do you want to remove the tick at 0 and only have 5,10, etc.? Could you just
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.set_xticks(range(5,11,5))
ax1.plot(range(11))
plt.show()
Ryan
On Sat, Feb 14, 2015 at 10:47 AM, Tommy Carstensen
Post by Tommy CarstensenThanks for you answer Eric. I had to get some sleep before trying out
things. I currently have the code below, but it does not remove the
zero value tick. It removes the tick at 5 and 10 however.
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.xaxis.set_major_locator(MultipleLocator(5))
xticks = ax1.xaxis.get_major_ticks()
#xticks[0].label1.set_visible(False)
#xticks[-1].label1.set_visible(False)
ax1.set_xticks(ax1.get_xticks()[1:-1])
ax1.plot(list(range(11)))
plt.show()
Post by Eric FiringPost by Tommy CarstensenIs it possible to combine MultipleLocator and MaxNLocator? One seems
to erase the effect of the other.
They are for different situations. MultipleLocator is for when you know
what you want your tick interval to be; MaxNLocator is for when you
don't know that, but you do know roughly how many ticks you want, and
what sort of numerical intervals are acceptable.
Eric
------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is
your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take
a
look and join the conversation now.
http://goparallel.sourceforge.net/
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is
your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now.
http://goparallel.sourceforge.net/
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users
------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Matplotlib-users mailing list
https://lists.sourceforge.net/lists/listinfo/matplotlib-users