4
votes

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

2
Call boxplot before set xticks. - Serenity
Hi, I tried that but it didn't work. - Stanley Gan

2 Answers

4
votes

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

11
votes

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.