Stanley Gan
Stanley Gan

Reputation: 481

Problems with matplotlib.pyplot.xticks()

I am trying to plot boxplots as follows:

import matplotlib.pyplot as plt

plt.figure()
plt.xlabel("X")
plt.ylabel("Y")
plt.xticks([1,2,3,4], ["a", "b", "c", "d"])
plt.boxplot(data)
plt.show()

However, I got an error for plt.xticks where it says tuple object is not callable. My x-axis is labelled with 1,2,3,4 instead of 'a', 'b', 'c', 'd'.

I am following a tutorial here: Rotating custom tick labels

Upvotes: 4

Views: 25669

Answers (2)

Cobra
Cobra

Reputation: 632

The other reason this can happen is if you mistakenly redefine plt.xticks. For example, if you accidentally run:

plt.xticks = ([1,2,3,4], ['a','b','c','d']) #wrong format, uh oh

Now you've redefined plt.xticks as a tuple variable. When you then go to call it the right way:

plt.xticks([1,2,3,4], ["a", "b", "c", "d"])

You'll get an error for trying to call a tuple. The easy solution is to restart your session fresh, or at least to reimport matplotlib.pyplot which should overwrite the mistaken variable you created.

You can reimport matplotlib.pyplot as follows. Assuming you originally imported it as plt:

import importlib
importlib.reload(plt)

Upvotes: 20

Reblochon Masque
Reblochon Masque

Reputation: 36662

The order with which you construct the plot matters; you must first create the plot with the data, then adjust the settings as you like:

import matplotlib.pyplot as plt   # <-- you had a typo here

plt.figure()
plt.xlabel("X")
plt.ylabel("Y")
plt.boxplot([1, 1, 2, 3, 4])
plt.xticks([1,2,3,4], ["a", "b", "c", "d"])
plt.show()

enter image description here

Upvotes: 4

Related Questions