I am drawing a plot using matplotlib and python like the sample code below.
x = array([0,1,2,3]) y = array([20,21,22,23]) plot(x,y) show()
As it is the code above on the x axis I will see drawn values
0.0, 0.5, 1.0, 1.5 i.e. the same values of my reference x values.
Is there anyway to map each point of x to a different string? So for example I want x axis to show months names( strings
Jun, July,...) or other strings like people names (
"John", "Arnold", ... ) or clock time (
"12:20", "12:21", "12:22", .. ).
Do you know what I can do or what function to have a look at?
For my purpose could it be
matplotlib.ticker of help?
You can manually set xticks (and yticks) using pylab.xticks:
import matplotlib.pyplot as plt import numpy as np x = np.array([0,1,2,3]) y = np.array([20,21,22,23]) my_xticks = ['John','Arnold','Mavis','Matt'] plt.xticks(x, my_xticks) plt.plot(x, y) plt.show()
The answer from @unutbu works perfectly for the pyplot – MATLAB style plotting.
However, for the object oriented API of matplotlib one can plot custom text on the
x-ticks of an
axis with following code:
x = np.arange(2,10,2) y = x.copy() x_ticks_labels = ['jan','feb','mar','apr','may'] fig, ax = plt.subplots(1,1) ax.plot(x,y) # Set number of ticks for x-axis ax.set_xticks(x) # Set ticks labels for x-axis ax.set_xticklabels(x_ticks_labels, rotation='vertical', fontsize=18)