1

Just want to plot a list with 50 (actually 51) elements: The list indices from 0 to 50 should represent meters from 0 to 10 meters on the x-axis, while the index of every further element increases by 0.2 meters. Example:

list = [2.5, 3, 1.5, ... , 7, 9]
len(list)
>>50

I would like the x-axis plotted from 0 to 10 meters, i.e. (x,y)==(0, 2.5), (0.2, 3), (0.4, 1.5), ..., (9.8, 7), (10, 9)

Instead, the list is obviously plotted on an x-scale from 0 to 50. Any idea how to solve the problem? Thanks!

dax5
  • 69
  • 1
  • 2
  • 6

1 Answers1

7

I would avoid naming a list object list. It confuses the namespace. But try something like

import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)

x = np.arange(0, 10, 0.2)
y = [2.5, 3, 1.5, ... , 7, 9]
ax.plot(x, y)
plt.show()

It creates a list of point on the x-axis, which occur at multiples of 0.2 using np.arange, at which matplotlib will plot the y values. Numpy is a library for easily creating and manipulating vectors, matrices, and arrays, especially when they are very large.

Edit:

fig.add_subplot(N_row,N_col,plot_number) is the object oriented approach to plotting with matplotlib. It's useful if you want to add multiple subplots to the same figure. For example,

ax1 = fig.add_subplot(211)
ax2 = fig.add_subplot(212)

adds two subplots to the same figure fig. They will be arranged one above the other in two rows. ax2 is the bottom subplot. Check out this relevant post for more info.

To change the actual x ticks and tick labels, use something like

ax.set_xticks(np.arange(0, 10, 0.5))
ax.set_xticklabels(np.arange(0, 10, 0.5)) 
# This second line is kind of redundant but it's useful if you want 
# to format the ticks different than just plain floats. 
Community
  • 1
  • 1
wflynny
  • 18,065
  • 5
  • 46
  • 67
  • Sorry for responding late and thanks, it works perfectly! 2 questions remain: - google add_subplot(), but didn't really get, what it's good for. Any short explanation? - How can I adjust the scale labels to get them finer? Per default, the x-axis labels are 0,2,4,6,8,10. It would be nice to have them like 0, 0.5, 1, 1.5, ... while the real numbers are depicted slightly smaller. Txh again for your help! – dax5 Sep 14 '13 at 13:33