Reputation: 481
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
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
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()
Upvotes: 4